ファイルのコピーが完了したことをPythonスクリプトに警告する方法を見つけたいと思います。シナリオは次のとおりです。
フォルダー
to_print
は、常にポーリングすることにより、スクリプトによって監視されていますos.listdir()
。os.listdir()
これまでに表示されたことのないファイルが存在するファイルのリストを返すたびに、スクリプトはそのファイルに対していくつかの操作を実行します。これには、ファイルを開いたり、その内容を操作したりすることが含まれます。
これは、ファイルが小さい場合は問題ありません。ファイルを元のソースから監視対象のディレクトリにコピーするのにかかる時間は、次のポーリングまでの残り時間よりも短くなりos.listdir()
ます。ただし、ファイルがポーリングされて見つかったが、ファイルがまだコピー中である場合、スクリプトがファイルを処理しようとすると、ファイルの内容が破損します。
代わりにos.stat
、ファイルが現在コピーされていることを(使用しているかどうかにかかわらず)知り、その場合は実行するまでファイルがコピーされるのを待ちたいと思います。
私の現在の考えはos.stat()
、新しいファイルを見つけるたびに使用し、次のポーリングまで待って、最後にポーリングしてからの変更/作成時刻を比較することです。同じままの場合、そのファイルは「安定」しています。になるまでポーリングを続けます。Linux / Unixがこれらの値を更新する方法にあまり詳しくないので、これが機能するかどうかはわかりません。