2017-06-23 124 views
1

我有一组由应用程序创建的100个文件。这些文件不是以顺序方式动态更新的。使用Python,我试图读取这些文件。但是,我不知道哪个文件在什么时候得到更新。Python触发文件更改事件

我不希望每个时间循环遍历每个文件,以检查在实例中更新哪些文件。我可以创建多个进程/线程来触发主进程更新哪个文件。是否有任何其他方式像文件更新可以通知主要的Python进程,以便只有这些文件被读取?

谢谢。

回答

2

尝试python模块“看门狗”。它将启动一个文件或文件夹观察器,可用于启动文件/文件夹更改功能。 https://pypi.python.org/pypi/watchdog

下面的例子将观察一个文件夹,并通知其中的文件的每一个变化。如果您只想要特定事件,请参阅文档。是不是在同一个文件夹中创建 https://pythonhosted.org/watchdog/api.html#watchdog.events.FileSystemEventHandler

import time 
from watchdog.observers import Observer 
from watchdog.events import FileSystemEventHandler 


class EventHandler(FileSystemEventHandler): 
    def on_any_event(self, event): 
     print event 


if __name__ == "__main__": 
    path = "/PATH/TO/YOUR/FOLDER" 
    event_handler = EventHandler() 
    observer = Observer() 
    observer.schedule(event_handler, path, recursive=True) 
    observer.start() 
    try: 
     while True: 
      time.sleep(1) 
    except KeyboardInterrupt: 
     observer.stop() 
    observer.join() 
+0

的所有文件。它们是在不同的文件夹中创建的,所以我需要创建100个观察者。 – wonder

+0

这些文件夹是否位于文件系统的所有文件夹中,还是都位于一个特定于应用程序的顶层目录中? – JonasR

+0

他们都有一个特定的顶层目录。 – wonder