2012-10-10 61 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 
相關問題