2012-10-10 60 views
9

可能重复:
python: which file is newer & by how much time检查文件是否更新,然后是其他文件?

在蟒蛇 - 我怎么检查 - 如果该文件是新的,然后其他一些文件?

编辑

有创建时间和修改时间。

该问题应明确说明期望的属性。

修改

  • os.stat(FILE).st_mtime

  • os.path.getmtime(FILE)

创作

os.path.getctime(FILE)os.stat(FILE).st_ctime不给在类Unix操作系统的创建时间。 Link作者:root有关于如何在Unix类盒子上找出创建时间的解决方案。

+2

你到目前为止尝试过什么?像这样的文件操作通常可以通过['os'模块](http://docs.python.org/library/os.html)轻松解决。 –

+0

@MartijnPieters:哦,我在想什么模块搜索。现在我正在阅读os.stat的文档 - thatnks给你。 – Adobe

+0

@MartijnPieters:它不是重复的 - 因为那里的人们谈论修改时间,而正如它所说的问题 - 关于创建时间(坦率地说修改 - 是我需要的 - 但我忘了它的一切同时发布该问题)。 – Adobe

回答

6

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

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

编辑:请注意,there is no cross platform solution to your question - 在Unix中的ctime()是指上次更改时间,而不是创建时间。 The same applies when using os.stat(file).st_ctime.

Here似乎是可以在unix机器上工作的东西。

+0

幸运的是,我不必处理Windows。 – Adobe

+0

@ Adob​​e - 更新了答案,添加了关于OSX的另一个问题的链接,但它似乎有点冒失。 – root

+0

@ Adob​​e - :) :) :) – root

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

if f1 > f2: 

支票修改时间可能是一个解决方案

+0

看来你正在比较修改时间,而不是创建。 – defuz

+3

由于文件可以更新为更新 –

+1

很好意识到,如果文件不存在,则会引发OSError。在try/except块中包装会很好。 –

0
import os 

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

上的任何文件使用os.stat,给你一组有关文件10个不同的统计数据。其中的统计是creation time - >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 
相关问题