python看门狗跟踪来自另一个进程的单个文件更改在检测到更改时失败

问题描述

我在 Rust 中有一个代码,用于将数据附加到文件中,我想使用 Python 来跟踪文件何时被更改/扩展以将其存储到数据帧中以进行绘图。这是尝试观察更改并将其存储到数据帧中的 Python 代码

import logging
import os.path
import time

import pandas as pd
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler


class Handler(LoggingEventHandler):
    file2track = "data.csv"
    data = pd.DataFrame()

    def on_any_event(self,event):
        self.data.append(pd.read_csv(self.file2track,skiprows=len(self.data)))
        print("Changed!")


if __name__ == '__main__':
    logging.basicConfig(level=logging.INFO,format='%(asctime)s - %(message)s',datefmt='%Y-%m-%d %H:%M:%s')

    event_handler = Handler()
    observer = Observer()

    observer.schedule(event_handler,event_handler.file2track,recursive=True)

    observer.start()

    try:
        while True:
            time.sleep(1)
            print("looping")
    except KeyboardInterrupt:
        observer.stop()
    observer.join()

我不明白为什么但 on_any_event 只在开始时被调用,然后即使文件已更改,也会在循环中被绕过。我尝试了其他事件(on_modified、on_deleted 和 on_created),但始终无法识别更改。

这个文件保持相同的名称,所以我想知道看门狗是否因此没有检测到文件不同!我不太了解文档更改文件的含义。是日期、名称文件大小……?有没有人想过这个? 谢谢!

解决方法

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

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

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