2017-06-23 150 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