2017-06-23 9 views
1

私はアプリケーションによって作成される100個のファイルのセットを持っています。ファイルは、順次的に更新されるのではなく、動的に更新されます。 Pythonを使用して、私はファイルを読み込もうとしています。しかし、どのファイルが何時更新されているのか分かりません。Pythonトリガーファイルの変更イベント

インスタンスごとにどのファイルが更新されているかを確認するたびに、すべてのファイルをループする必要はありません。私は、更新されたファイルをメインプロセスにトリガーするための複数のプロセス/スレッドを作成することができます。ファイルの更新がメインのpythonプロセスに通知して、それらのファイルだけが読み込まれるような方法はありますか?

ありがとうございました。

答えて

2

pythonモジュール "watchdog"を試してみてください。ファイル/フォルダの変更を開始するために使用できるファイルまたはフォルダオブザーバが起動します。 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のような別のフォルダに作成されます。私はそのように100のオブザーバーを作成する必要がありますか? – wonder

+0

これらのフォルダはすべてあなたのファイルシステムの周りにありますか、それともそれらはすべて1つのアプリケーションに特有のトップディレクトリですか? – JonasR

+0

彼らはすべて特定のトップディレクトリを持っています。 – wonder

関連する問題