使用 watchdog

问题描述

我正在尝试查看目录中的单个文件以进行修改。 该文件是“csv”,由谷歌表单响应生成。一旦注册了新的响应,它就会更新,这个新条目需要用于创建新对象并存储在数据库中。
作为测试,我尝试更新包含多个文件夹的目录中的示例 .txt 文件。为了完成任务,我使用了看门狗并尝试记录文件夹的修改事件。

文件夹结构如下

-test
  |--a.txt
  |--fileRandom.txt
  .
  .

我尝试使用以下代码记录活动

import sys
import time
import logging
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
from datetime import datetime,timedelta

class Handler(FileSystemEventHandler):

    def on_modified(self,event):
        print(f'event type: {event.event_type} path : {event.src_path}')

if __name__ == "__main__":
    path = 'test/wdogfolder'
    event_handler = Handler()
    observer = Observer()
    observer.schedule(event_handler,path,recursive=False)
    observer.start()
    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()
    observer.join()

编辑 a.txt 后,我得到以下日志。

event type: modified path : /test/wdogfolder
event type: modified path : /test/wdogfolder/.goutputstream-CP5LX0
event type: modified path : /test/wdogfolder/.goutputstream-CP5LX0
event type: modified path : /test/wdogfolder

现在如果要在同一文件夹内编辑另一个文件,则日志如下。

event type: modified path : /test/wdogfolder
event type: modified path : /test/wdogfolder/.goutputstream-J2YCX0
event type: modified path : /test/wdogfolder/.goutputstream-J2YCX0
event type: modified path : /test/wdogfolder

我希望使用 src_path 来破译哪个文件发生了变化,因此一个简单的“if”语句就足以解决问题语句。 但是现在我如何处理仅 a.txt修改,因为路径似乎没有提到被修改文件名。 TIA!

编辑
我正在 ubuntu 18.04 上工作。相同的代码似乎以预期的方式在 Windows 上工作。这背后的原因可能是什么?以及如何规避这个问题?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)