私はピックアップディレクトリをチェックし、見つかったファイルを処理してから削除するPythonスクリプトを持っています。ピックアップディレクトリ:まだ書き込まれているファイルを取り込む方法はありますか?
そのディレクトリにファイルをドロップするプロセスによってまだ書き込まれているファイルをピックアップしないようにするにはどうすればよいですか?
私のテストケースはかなりシンプルです。私は300MBのファイルをピックアップディレクトリにコピー&ペーストし、スクリプトはまだ書かれているファイルをつかむことがよくあります。部分的なファイルだけを処理してから削除します。これは、書き込まれていたファイルが消えてしまったため、OSのファイル操作エラーを引き起こします。
私は/プロセスをオープンする前に/それを削除(FileLockモジュールを使用して)、ファイルのロックを取得しようとしました。しかし、それは助けにはなりません。
ファイルの変更時刻を調べて、今からX秒以内に何かを避けることを検討しました。しかし、それはclunkyと思われる。
私のテストはOSXで行われていますが、私は主要なプラットフォームで動作するソリューションを探しています。
ここでも同様の質問が表示されますが、明確な解決策はありませんでした(How to check if a file is still being written?)。
は、この問題に対する
ファイルを書き込んでいるアプリケーションは、本当にそれを原子的に行うべきですが、私はあなたがこれを制御できないかもしれないことに気付きます。 –
私はファイルを原子的に書く必要があるか、OSを介して直接的または間接的に書き込みを行うプロセスと通信する必要があるかのどちらかを確実に行うと思います。ファイルロックや変更イベントなどのOS固有のソリューションがありますが、AFAIKはクロスプラットフォームではありません。変更時間を確認することは、おそらくクロスプラットフォームのソリューションを取得するのと同じくらい効果的です。 –