0

着信ファイルのフォルダを監視する必要があります。私は次の助けを借りてそれをしました:
ファイルの変更を監視するにはどうすればよいですか?
問題は、移動中のファイルがかなり大きく(10GB)、すべてのファイルの移動が完了したときに通知を受け取りたいということです。20秒ごとにフォルダのサイズを比較しようとしましたが、ファイルは正しいサイズを示していますが、厳しいウィンドウでもまだ移動していることがわかります。私はPythonでWindowsを使用しています

openを使用してio例外を待機することで解決策を見つけました。ファイルがまだ移動している場合は、errno13が表示されます。

4

5 に答える 5

1

このリンクを見てください:

http://timgolden.me.uk/python/win32_how_do_i/watch_directory_for_changes.html

そこでは、あなたが話している方法 (単純なポーリング) と、私の意見では、問題に対して本当に優れた解決策を提供する他の 2 つのウィンドウ固有の手法との比較を見ることができます!

それ以外の場合、Linux を使用している場合は、iNotify と関連する Python ラッパーがあります。

Pyinotify は、inotify を介して Linux プラットフォームでファイルシステム イベントを監視するために使用される純粋な Python モジュールです。

ここ: http://trac.dbzteam.org/pyinotify

于 2010-03-08T21:26:36.590 に答える
0

最も信頼できる方法は、ファイルを移動する独自のプログラムを作成することです。

于 2010-03-08T21:03:25.863 に答える
0

os.stat()ファイルの mtime を監視するために使用できる場合があります。ただし、さまざまなネットワーク条件の下では、コピーが一時的に停止する可能性があり、mtime が数秒間更新されないことに注意してください。そのため、これを考慮に入れる必要があります。

別のオプションは、排他的な読み取り/書き込みでファイルを開こうとすることです。これは、ファイルがまだ他のプロセスによって開かれている場合、Windows では失敗するはずです。

于 2010-03-08T20:58:38.657 に答える
0

ファイルをインポートするプロセスを制御できる場合は、ファイルのコピーを開始するときにロック ファイルを配置し、完了したら削除します。ロックファイルとは、ファイルをコピーしていることを示すためだけに存在する tmp の空のファイルを意味します。次に、py スクリプトでロック ファイルの存在を確認できます。

于 2010-03-08T20:02:08.880 に答える
0

ポーリング中にファイルサイズの代わりに最終変更時刻の変更を確認してみてください。

于 2010-03-08T21:21:29.947 に答える