3

私はマックを使っています。LaunchedのWatchPathsディレクティブを使用して、ディレクトリのファイル変更を監視しています。私のスクリプトは、監視対象ディレクトリにファイルが追加または削除されたときにのみトリガーされます。

ただし、ファイルが変更された場合、スクリプトはトリガーされません。

基本的に、サイトフォルダを同期するためのDIYドロップボックスを作成しようとしています。

launchd、bash、またはpythonを介してこれを行う方法はありますか?

Linuxにはinotifyのようなものがあると思いますが、私はmacの解決策を知りません。

4

1 に答える 1

2

MacFSEvents パッケージ(PyPIでも入手可能)を使用して、問題を試してみました。

import os

from fsevents import Observer, Stream


def callback(file_event):
    print file_event.name # the path of the modified file


def main():
    observer = Observer()
    observe_path = os.getcwd() # just for this example
    stream = Stream(callback, observe_path, file_events=True)
    observer.start()
    observer.schedule(stream)


if __name__ == '__main__':
    main()

callbackこれにより、ファイルが作成、変更、または削除されるたびに呼び出されます(の値を使用して、発生したイベントを確認できますfile_event.mask)。

メインスレッドの外側のスレッドで観察したいと思うかもしれないことに注意してください(上記のプログラムは、でも終了を拒否しますKeyboardInterrupt)。APIの詳細については、MacFSEventsのREADMEを参照してください。お役に立てれば!

于 2012-05-13T04:01:27.063 に答える