2011-12-31 13 views
0

私はクラスを定義しました。クラスは現在、2つの引数selfとsavepathを取ります。このクラスのメソッドは2つの引数selfをとります。そのメソッドの中で、私は再び2つの引数local_hashとfilenameをとる関数を呼び出しますが、このメソッドを呼び出すと、私は以下のエラーを受け取ります。私はそれが自己主張で何かを持っていると仮定しますが、私はどこで、なぜそれを理解できません。そして記録のために、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 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) 
+0

'def put_nowait()'はどのようなクラスですか? –

+0

'put_nowait()'はQueueモジュールのメソッドです。 – Cirno

+0

私の答えが見つかりました。 put_nowait()は2つの引数 'put_nowait(self、(tuple、ここ))'を期待しています。 'put_nowait(タプル、ここ)) 'ではありません。 – Cirno

答えて

0

おそらくミスです'put_nowait'メソッドの引数リストに 'self'を入れてください。このような何か私がbelievie:以下にそれを変更する

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

はあなたの問題を解決する必要があります。

class md5_queue: 
    def put_nowait(self, filename, local_hash): 
    . 
    . 
    . 
+0

不十分な情報が与えられています。 – martineau

+0

どのように情報が不足していますか? :put_nowaitは、デフォルトモジュールであるQueueのメソッドです。 – Cirno

0

は私の答えを見つけました。 put_nowait()は2つの引数put_nowait(self、(tuple、ここ))を期待しています。ない(タプル、ここ)。

関連する問題