метод класса, получающий неизвестные аргументы - PullRequest
0 голосов
/ 01 января 2012

У меня есть класс, который я определил, класс в настоящее время принимает 2 аргумента, self и savepath. Метод этого класса принимает 2 аргумента, self. В этом методе я вызываю функцию, которая снова принимает 2 аргумента, local_hash и filename, однако при вызове этого метода я получаю сообщение об ошибке, описанное ниже. Я предполагаю, что это как-то связано с аргументом self, но я не могу понять, где и почему. И для записи, put_nowait () является методом модуля по умолчанию. Я не думаю, что мне нужно будет опубликовать код для всех соответствующих модулей по умолчанию, которые я использую.

Метод:

def cache_files(self, path):
    self.folder_path = path
    self.md5_queue = Queue.Queue()
    accepted_file_types = ['.jpg', '.png', '.gif']
    self.hash_directory = os.walk(self.folder_path, topdown=True)
    if self.folder_path != None:
            for root, subfolders, images in self.hash_directory:
                for filename in images:
                    try:
                        if filename[-4:] in accepted_file_types:
                            self.local_hash = hash_sum(os.path.join(root, filename))
                            self.md5_queue.put_nowait(filename, self.local_hash)
                    except IOError:
                        continue
    print 'Directory has finished caching, exiting...'
    return self.md5_queue

Def def ():

def run(self):
    # references pickle file if available
    md5_path = os.path.join(os.path.dirname(__file__), 'md5.pickle')
    try:
        self.md5_dict = md5_unpickler(md5_path)
    except IOError:
        pass
    if self.hash == True:
        self.cache_files(self.savepath)
    else:
        self.build_queue()

Ошибка:

Traceback (most recent call last):
  File "C:\Users\Cirno\Dropbox\CirnoCrawler\crawler.py", line 98, in run
    self.cache_files(self.savepath)
  File "C:\Users\Cirno\Dropbox\CirnoCrawler\crawler.py", line 84, in cache_files

    self.md5_queue.put_nowait(filename, self.local_hash)
TypeError: put_nowait() takes exactly 2 arguments (3 given)

Ответы [ 2 ]

0 голосов
/ 01 января 2012

нашел мой ответ. put_nowait () ожидает 2 аргумента, put_nowait (self, (tuple, here)). нет (кортеж, здесь).

0 голосов
/ 01 января 2012

Возможно, вам не хватает «я» в списке аргументов метода «put_nowait». Как то так я верю:

class md5_queue:
    def put_nowait(filename, local_hash):
     .
     .
     .

Если изменить его на следующее, это решит вашу проблему:

class md5_queue:
    def put_nowait(self, filename, local_hash):
     .
     .
     .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...