3

Watchdog は、特定のディレクトリの再帰的なスナップショットを作成できる点で非常に優れています。DirectorySnapshotDiffという関数を使用してスナップショットを比較することもできます。

私のプログラムは、ディレクトリがリアルタイムで進化するのを監視しているため、この関数の出力を消費するように作られています。これは非常に合理的です。

s1, s2...任意の時点でファイル システムのスナップショットを作成するとします。最後のスナップショットと最新のスナップショットを比較して、差分オブジェクトを作成します。

        d1    d2           # detected differences (my app eats these up)
     s1 -> s2 -> s3        # evolving states (snapshots taken) of the file system.

t=0 -------------------> time

オムノムノム。それは素晴らしいことです。

しかし、アプリを初めて実行するときは、現在の状態を知る必要があります。s0に遷移する null 状態があったふりをしたいs1。したがって、形式を比較できます。すなわち

     d0                # I want to create this 'bootstrapping' difference set
(s0) -> s1             # Assume s0 is the empty snapshot: it reports everything is an addition

それ、どうやったら出来るの?

この背後にある動機は次のとおりです。私は関数型プログラミングが大好きです。スナップショットとスナップショットの差分を使用するコードを作成する代わりに (どちらもかなりの作業です)、再利用率を高く保ち、コードを最小限に抑えたいと考えています。

4

2 に答える 2

2

Python >= 2.6 のバージョンでは、watchdog は OrderedSet を使用します。

ファットホクのパス関数を次のように変更します。

@property
def paths(self):
    if sys.version_info >= (2, 6, 0):
        return watchdog.utils.bricks.OrderedSet()
    return set()
于 2014-05-19T20:04:41.020 に答える