0
特定のログファイルを監視するスクリプトを作成しようとしていますが、.txtファイルを見ることができません。それは他のタイプのファイルとうまく動作します。Python Watchdog-src_path inconsistent
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
from os.path import expanduser
file_to_watch = 'test.txt'
class FileModifiedHandler(FileSystemEventHandler):
def __init__(self, path, file_name, callback):
self.file_name = file_name
self.callback = callback
self.observer = Observer()
self.observer.schedule(self, path, recursive=False)
self.observer.start()
self.observer.join()
def on_modified(self, event):
print "Event: %s" % (event)
print "Ends with %s: %s" % (self.file_name, event.src_path.endswith(self.file_name))
if not event.is_directory and event.src_path.endswith(self.file_name):
self.callback()
if __name__ == '__main__':
def callback():
print("FILE WAS MODIFIED")
FileModifiedHandler('.', file_to_watch, callback)
私はの.pyファイルにfile_to_watchを設定すると、ログが正しいソースパスを返しますが、私は同じフォルダ内の.txtファイルに変更したときに、それがディレクトリで停止します。私はこの理由が分からない。ここでプログラムが返すものです:
Event: <FileModifiedEvent: src_path='/Users/nick/Documents/Python/WatchdogTest.py'>
Ends with WatchdogTest.py: True
FILE WAS MODIFIED
Event: <DirModifiedEvent: src_path='/Users/nick/Documents/Python'>
Ends with test.txt: False
私はこの問題を解決しました。 TextEdit(Macの場合)でコードを変更してコードをテストしていましたが、別のテキストエディタ(Bracketsを使用)で修正したときに動作しました。たぶんTextEditは既存のファイルを変更するのではなく、新しいファイルを保存するのでしょうか? –