我可以从一个打开供读取的文件中获取文件修改时间吗(python)
像 file("foo.txt")
这样打开的文件,是否有关于文件修改时间的信息呢?
我主要想知道,自从某个时间点以来,这个文件是否被修改或替换过。但是,如果在我检查修改时间和打开文件之间,文件被替换了,那我得到的信息就不准确了。
我该怎么确保呢?
谢谢。
更新
@rubayeet:谢谢你的回答(+1),我其实没有想到这一点。不过……如果修改时间发生了变化,我该怎么办?也许我可以重新加载文件。但是如果那时候又发生了变化呢?如果文件经常被修改,我可能会陷入一个无限循环!我真正想要的是一种方法,可以获取一个打开的文件句柄和对应的修改时间,而不必担心会陷入无限循环。
附注:你给的答案其实已经足够满足我的需求,因为这个文件不会经常被修改,现在我只是出于好奇。
更新 2
经过对之前更新的思考(并进行了一些实验),我意识到,仅仅知道文件在打开时的修改时间并没有太大用处,因为如果在读取文件时文件被修改了,你可能会在读取的内容中包含一些或全部的修改数据。所以你必须打开并读取/处理整个文件,然后再检查一次修改时间(根据 @rubayeet 的回答),以确定你是否可能有过时的数据。
2 个回答
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"
当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。