2017-02-18 18 views
2

私はWindows上で動作するPythonスクリプトを作成しようとしています。ファイルは数秒ごとにフォルダにコピーされます。最後のポーリング後にフォルダにコピーされた新しいファイルの名前は、30秒ごとにそのフォルダをポーリングしています。ファイルがフォルダ(Python)にコピーされる時間の取得

私が試したことは、os.path.getXtime(folder_path)機能の1つを使用して、それを以前のポーリングのタイムスタンプと比較することです。 getXtimeの値がタイムスタンプより大きい場合は、それらのファイルを処理します。

私は関数os.path.getctime(folder_path)を使用しようとしましたが、スクリプトを作成する前にファイルが作成されていたため、機能しませんでした。私はos.path.getmtime(folder_path)も試みましたが、変更された時間は通常、ポーリングタイムスタンプよりも小さいです。

最後に、os.path.getatime(folder_path)を試しましたが、これはファイルが初めてコピーされたときに動作します。問題は、フォルダに入ってからファイルを読み込んでいるため、アクセス時間が更新され続けて、同じファイルを何度も何度も読み終わることになります。

私はこれを行うためのより良い方法や機能が不明です。

答えて

1

ここにはXY problemのビットがあります。フォルダー内のファイルが変わったとき、ホメール化されたソリューションを試したとき、それが機能しなかったことを知りたければ、今度はあなたのホームメイドソリューションを修正したい。

ひどいハッカーの代わりに、ファイルの変更を監視するために設計された既存のパッケージを使用できますか?ポーリングループではありませんが、実際に発生したときに変更が通知されます。 inotifyはLinuxのみですが、other options for Windowsがあります。

+1

また、ディレクトリに表示されるファイルのポーリングは、情報を確実に確実に転送するためのかなり悪い方法です。それは簡単だと思われますが、私はそれがなぜとても人気があるのか​​と推測しています。しかし、ディレクトリに「出現する」ファイルが完全であることを保証するために、帯域外通信なしで確実に実装することは、バグが発生しやすく、文字通り不可能です。その帯域外通信がなければ、ディレクトリ内の新しいファイルが完成したことを知ることは不可能**です。どのファイルが新しいファイルであるかを知ることの問題を心配しないでください。 「ほとんどの時に働く」は、私が今までに**提供したいことではありません。 –

関連する問題