0

サンプルコードをコピーしました

import sys
import time
import logging
from watchdog.observers import Observer
from watchdog.events import LoggingEventHandler

if __name__ == "__main__":
logging.basicConfig(level=logging.INFO,
                    format='%(asctime)s - %(message)s',
                    datefmt='%Y-%m-%d %H:%M:%S')
path = sys.argv[1] if len(sys.argv) > 1 else '.'
event_handler = LoggingEventHandler()
observer = Observer()
observer.schedule(event_handler, path, recursive=True)
observer.start()
try:
    while True:
        time.sleep(1)
except KeyboardInterrupt:
    observer.stop()
observer.join()

助けてください私はPython広告ウォッチドッグが初めてです

また、次の質問に対するいくつかの回答も必要です。次のコードの出力はどのような形式で、どこに表示されますか? コードで監視するディレクトリを変更するにはどうすればよいですか?

次のようにファイルtest.pyに保存して、そのまま実行してみました

python C:\フォルダ\test.py

次のエラーが返されました

C:\Python33>python c:\folder\test.py
Traceback (most recent call last):
File "c:\folder\test.py", line 4, in <module>
from watchdog.observers import Observer
File "C:\Python33\lib\site-packages\watchdog\observers\__init__.py", line 34,
in <module>
from watchdog.observers.api import BaseObserver, DEFAULT_OBSERVER_TIMEOUT
File "C:\Python33\lib\site-packages\watchdog\observers\api.py", line 62, in <module>
from watchdog.utils.bricks import OrderedSetQueue as SetQueue
File "C:\Python33\lib\site-packages\watchdog\utils\bricks.py", line 112, in <module>
if not sys.version < (2, 6, 0):
TypeError: unorderable types: str() < tuple()
4

1 に答える 1

0

これはウォッチドッグのバグのようです。Python 2.6 および 2.7 で動作します。sys.version両方とも文字列であり、タプルと同等です。私には奇妙な考えのように思えます。

この動作は 3.x で変更されている可能性があります。3.x で適切にテストされていない場合は、さらに問題が発生することが予想されます。多くのライブラリが 3.x をサポートしていないため、Python 2.7 を使用するのが最も安全です。

とにかく、本当にこの問題を解決したいのであれば、watchdog\utils\bricks.py の 112 行目にパッチを当てることができます:

ver = tuple([int(x) for x in sys.version.split()[0].split('.')])
if not ver < (2, 6, 0):

それは本当に醜いです。代わりに Python 2.7 を使用してください。

于 2013-03-15T09:50:05.070 に答える