首页 >后端开发 >Python教程 >如何在Python中高效监控文件变化而不需要轮询?

如何在Python中高效监控文件变化而不需要轮询?

Susan Sarandon
Susan Sarandon原创
2024-12-14 05:31:12668浏览

How Can I Efficiently Monitor File Changes in Python Without Polling?

使用 Python 监控文件更改而不进行轮询

问题:
您有一个由您想要监控的另一个进程写入的日志文件进行更改。每当发生更改时,您都需要读取新数据进行处理。

背景:
您正在考虑使用 PyWin32 库的 win32file.FindNextChangeNotification 函数,但您不确定如何配置它来观看特定文件。

解决方案:引入Watchdog
除了轮询之外,更有效的选择是使用 Watchdog 库。操作方法如下:

import watchdog.observers
import watchdog.events

class MyEventHandler(watchdog.events.FileSystemEventHandler):
    def on_modified(self, path, metadata):
        # Read the modified log file and perform necessary processing

# Create a Watchdog observer
observer = watchdog.observers.Observer()

# Add the log file path to be watched
observer.schedule(MyEventHandler(), "path/to/log_file")

# Start observing
observer.start()

# Wait indefinitely for changes
observer.join()

注意:
如果您通过映射的网络驱动器监视文件,Windows 可能不会像在网络驱动器上那样“听到”文件的更新。本地磁盘。在这种情况下考虑使用不同的方法。

以上是如何在Python中高效监控文件变化而不需要轮询?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn