python: объект 'str' не вызывается? - PullRequest
0 голосов
/ 22 марта 2012

Я просмотрел много похожих постов, но ни один из них, похоже, не решил мою проблему.У меня есть метод, который ищет путь к файлу:

def getDumpFile(self):
        self.saveDump()
        dumpname = str(self.filename)+'-01.netxml'

        filepath = os.path.join('/some/path/to/file',dumpname)
        try:
            if os.path.exists(os.path.join('/some/path/to/file',dumpname)):
                logging.debug( "Filepath "+str(filepath) )
                return filepath
            else:
                logging.debug( "File Not Found" )
                return None
        except OSError as e:
            logging.debug( "File not created: "+str(e) )
            return None

и в основной функции я вызываю эту функцию следующим образом:

xmlfile = wscanner.getDumpFile()

, и когда я выполняю приведенный выше код, он находитправильный путь в методе getDumpFile(), но сервер выдает исключение:

Unexpected exception in wireless.views.attackAP with type <type 'exceptions.TypeError'> and error 'str' object is not callable

Я действительно не знаю, почему передача переменной filepath в xmlfile (которая, я считаю, никогда не инициировалась ранее) моглавызвать ошибку, пожалуйста, помогите.Спасибо.

Редактировать: На самом деле код xmlfile = wscanner.getDumpFile() выдает ошибку, но я не знаю почему.Закомментируйте эту строку, чтобы избавиться от ошибки, но мне понадобится этот путь позже.

Ответы [ 2 ]

1 голос
/ 22 марта 2012

Вот почему мне нравится StackOverflow - он заставляет вас действительно погрузиться глубже.

Последний постер на 100% правильный. Я написал быстрый класс, чтобы продемонстрировать проблему. Если бы мне пришлось перейти к тому, что мы знаем из постера, я бы предложил поближе взглянуть на ссылки на getDumpFile, чтобы убедиться, что кто-то случайно не назначил ему строковое значение:

class MyClass:
    def getDumpFile(self):
        pass

myclass = MyClass()
myclass.getDumpFile = 'hello world'

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object is not callable
0 голосов
/ 22 марта 2012

В этом модуле происходит что-то «непитоническое».Но давайте на мгновение проигнорируем это.

Вы говорите, что сообщение об ошибке исходит от вызова метода:

xmlfile = wscanner.getDumpFile()

Если бы мне пришлось угадывать, я бы сказал, что wscanner - это неопределил, как вы думаете, и, в частности, интерпретатор python считает, что это строка.

Попробуйте добавить этот вызов прямо перед вызовом getDumpFile ()

print type(wscanner)

Посмотрите, что он показывает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...