我刚开始在 Mac 上使用 Python 中的Watchdog 库,并且正在做一些基本的测试以确保一切都像我预期的那样工作。不幸的是,它们不是——我似乎只能获得包含注册事件的文件的文件夹的路径,而不是文件本身的路径。
下面是一个简单的测试程序(对 Watchdog 提供的示例稍作修改),用于在注册事件时打印出事件类型、路径和时间。
import time
from watchdog.observers import Observer
from watchdog.events import LoggingEventHandler
from watchdog.events import FileSystemEventHandler
class TestEventHandler(FileSystemEventHandler):
def on_any_event(self, event):
print("event noticed: " + event.event_type +
" on file " + event.src_path + " at " + time.asctime())
if __name__ == "__main__":
event_handler = TestEventHandler()
observer = Observer()
observer.schedule(event_handler, path='~/test', recursive=True)
observer.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
src_path 变量应该包含发生事件的文件的路径。
但是,在我的测试中,当我修改文件时, src_path 只打印包含该文件的文件夹的路径,而不是文件本身的路径。例如,当我修改文件moon.txt
夹中的文件europa
时,程序会打印以下输出:
event noticed: modified on file ~/test/europa at Mon Jul 8 15:32:07 2013
为了获得修改后文件的完整路径,我需要更改什么?