我可以从打开的文件中获取文件修改时间吗(python)

2024-10-03 04:32:25 发布

您现在位置:Python中文网/ 问答频道 /正文

file("foo.txt")这样打开的文件是否有关于文件修改时间的信息?在

基本上,我想知道文件是否在某个时间被修改或替换,但是如果文件在检查修改时间和打开文件之间被替换,那么你就得到了不准确的信息。在

我怎么能确定?在

谢谢。在

@rubayeet:谢谢你的回答(+1),我其实没想到。但是。。。如果修改时间改变了怎么办?也许我会重新加载文件。但如果那一次改变了呢?如果文件是定期被触摸,我可能会结束在一个循环永远!我真正想要的是一种方法,只需要一个打开的文件句柄和一个修改时间,而不需要潜在的无限循环。在

PS你给出的答案对我来说已经足够好了,因为文件不会定期更改,这是我现在最感兴趣的部分。在

更新2

考虑到之前的更新(并进行了一点实验),我意识到仅仅知道文件在打开时的修改时间并没有多大用处,因为如果在读取文件时修改了文件,那么您可以在读取的内容中保存一些或全部修改的数据,因此您必须打开并读取/处理整个文件,然后再次检查mtime(根据@rubayeet的回答)看看是否有过时的数据。在


Tags: 文件数据方法答案txt信息foo时间
2条回答

对于简单的modtime,您可以使用:

from os.path import getmtime

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

如果需要回调功能,可以检查python的inotify绑定:pyinotify。在

您基本上设置了一个watchmanager,当监视目录中发生任何更改时,它会在事件循环中通知您。打开一个特定的mod文件,如果你写了一个特定的事件。在

如果您对文件的独占访问感兴趣,我将指向fnctl module,它在文件描述符上有一些低级和文件锁定机制。在

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"

相关问题 更多 >