1

開いたファイルにfile("foo.txt")は、ファイルの変更時間に関する情報がありますか?

基本的に、特定の時間以降にファイルが変更または置換されたかどうかを知りたいのですが、変更時刻を確認してからファイルを開くまでの間にファイルが置換された場合、不正確な情報が得られます。

どうすれば確信できますか?

ありがとう。

アップデート

@rubayeet:答えてくれてありがとう(+1)、私は実際にそれを考えていませんでした。でも… 修正時間が変わったらどうするの?おそらく、ファイルを再度リロードします。でも、その時が変われば?ファイルが定期的に変更されていると、永遠にループしてしまう可能性があります。私が本当に欲しいのは、潜在的な無限ループなしで、開いているファイル ハンドルとそれに伴う変更時間を取得する方法です。

PSファイルが定期的に変更されることはないので、あなたが与えた答えは実際には私の目的には十分でした.

更新 2

以前の更新を考えてみると (そして少し実験してみると)、ファイルが開かれた時点でのファイルの変更時刻を単に知ることは、読み取り中にファイルが変更されたかのようにあまり役に立たないことがわかりました。変更されたデータの一部またはすべてを取得できます。そのため、ファイル全体を開いて読み取り/処理し、(@rubayeet の回答に従って) mtime を再度チェックして、古いデータがあるかどうかを確認する必要があります。

4

2 に答える 2

2

単純な modtime の場合は、次を使用します。

from os.path import getmtime

modtime = getmtime('/file/to/path')

コールバック機能のようなものが必要な場合は、python の inotify バインディングを確認できます: pyinotify

基本的に、監視対象のディレクトリで変更が発生した場合にイベントループで通知するウォッチマネージャーを設定します。ファイルを開くなどの特定のイベントに登録します(書き込まれた場合、modtimeが変更されます)。

ファイルへの排他的アクセスに関心がある場合は、fnctl モジュールを参照してください。このモジュールには、ファイル記述子に対する低レベルのファイル ロック メカニズムがあります。

于 2012-01-07T11:36:06.123 に答える
1
import os
filepath = '/path/to/file'
modifytime1 = os.path.getmtime(filepath)
fp = open(filepath)
modifytime2 = os.path.getmtime(filepath)
if modifytime1 != modifytime2:
    print "File modified after opening"
于 2012-01-07T11:40:43.720 に答える