1

現在、Pythonでエラーが発生していますが、見つけられないようです

def dictionaryObjectParsed():
    a = []
    b = []
    a, b = zip(*(map(lambda x: x.rstrip('\n\r').split('\t'), open('/Users/settingj/Desktop/NOxMultiplier.csv').readlines())))
    for x in range(0,len(a)):
        print a[x]
        print b[x]

def timer(f):
    threading.Timer(1, timer, f).start()
    print time.strftime('%I:%M:%S %p %Z')

timer(dictionaryObjectParsed)

Heresは私が得ているエラーです

Traceback (most recent call last):
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py", line 552, in __bootstrap_inner
    self.run()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py", line 756, in run
    self.function(*self.args, **self.kwargs)
TypeError: timer() argument after * must be a sequence, not function

以前にこれを行うことができましたが、このエラーを作成するために何かをしたと思います。

私は明らかにタイマー関数に引数を渡しています...そうですか?

編集

私も試しtimer(dictionaryObjectParsed)ましたが、何もありません...

また、初心者の質問で申し訳ありませんが、これはPythonでの2日目です... :P

4

3 に答える 3

3

関数を呼び出さずに渡します (「()」を削除します)。

timer(dictionaryObjectParsed)

def timer(f):
    threading.Timer(1,f).start()
    print time.strftime('%I:%M:%S %p %Z')

それ以外の

threading.Timer(1,timer)

再帰的なタイマー関数を作成しようとしていると思いますが、間違っています。あなたが得ているエラーは、関数パラメータなしで関数「timer」を再度呼び出しています。単純なミスだったと思います。


さて、再帰関数が必要なので、これを試してください:

def timer(f):
    threading.Timer(1,timer,[f,]).start()
    f()
    print time.strftime('%I:%M:%S %p %Z')

働いた?

于 2013-08-13T17:37:34.187 に答える