检查文件是否比其他文件更新?

17

可能重复:
python:如何检查文件是否比其他文件更新?

在 Python 中,如何检查文件是否比其他文件更新?

编辑:

有创建时间和修改时间。

问题应明确说明所需属性。

修改时间

  • os.stat(FILE).st_mtime

  • os.path.getmtime(FILE)

创建时间

os.path.getctime(FILE)os.stat(FILE).st_ctime 在类 Unix 操作系统上无法提供创建时间。链接root 给出了如何查找类 Unix 系统上的创建时间的解决方法。


2
你目前尝试了什么?像这样的文件操作通常可以通过os模块轻松解决。 - Martijn Pieters
@MartijnPieters:哦,我在想要搜索哪个模块。现在我正在阅读os.stat的文档——感谢您。 - Adobe
@MartijnPieters:这不是那个问题的重复,因为那里的人们谈论的是修改时间,而问题本身则是关于创建时间(坦白地说,修改时间才是我需要的,但在发布问题时我忘记了)。 - Adobe
好的,既然你修改了问题,它现在就不再是重复的了。另一个问题向你展示了如何检索那些信息,而这也是你最初的问题。 - Martijn Pieters
4个回答

15
import os
f1 = os.path.getmtime('file1')
f2 = os.path.getmtime('file2')

if f1 > f2:

检查修改时间可能是一个解决方案。


似乎你正在比较修改时间,而不是创建时间。 - defuz
4
由于文件可以更新为较新版本。 - James
1
最好知道,如果文件不存在,会引发OSError。最好将其包装在try / except块中。 - nu everest

15

您还可以使用os.path.getctime。此示例将返回True如果file1file2之前创建,否则返回False

import os.path
os.path.getctime('file1') < os.path.getctime('file2')

编辑:请注意,没有跨平台的解决方案可以回答你的问题 - 在Unix上的ctime()表示的是最后更改时间,而不是创建时间。当使用os.stat(file).st_ctime时同样适用。

这里似乎有些东西可以在Unix机器上运行。


幸运的是,我不必处理Windows。 - Adobe
@ Adobe - 更新了答案,添加了一个关于OSX的另一个问题的链接,但似乎有点hackish。 - root

4

使用 os.stat 对任何文件进行操作,可以得到有关该文件的 10 种不同统计信息。其中一个统计信息是创建时间 -> st_ctime。您可以使用它来计算两个文件的创建时间差。

>>> import os
>>> os.stat("D:\demo.pl")
nt.stat_result(st_mode=33206, st_ino=0L, st_dev=0, st_nlink=0, st_uid=0, 
st_gid=0, st_size=135L, st_atime=1348227875L, st_mtime=1348228036L, 
st_ctime=1348227875L)

>>> os.stat("D:\demo.pl").st_ctime
1348227875.8448658

1
import os

def comp(path1, path2):    
    return os.stat(path1).st_ctime > os.stat(path2).st_ctime

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接