2012-10-10 14 views
9

Eventuali duplicati:
python: which file is newer & by how much timeControlla se il file è più recente di un altro file?

in Python - Come posso controllare - se il file è più recente poi qualche altro file?

Edit:

ci sono ora di creazione e data di modifica.

La domanda dovrebbe indicare esplicitamente la proprietà desiderata.

modifica

  • os.stat(FILE).st_mtime

  • os.path.getmtime(FILE)

Creazione

os.path.getctime(FILE) e os.stat(FILE).st_ctime non dà tempo di creazione su sistemi operativi Unix-like. Link di root ha la soluzione su come trovare il tempo di creazione su scatole simili a Unix.

+2

Che cosa hai provato finora? Le operazioni di file come questa di solito sono facilmente risolte con il [modulo 'os'] (http://docs.python.org/library/os.html). –

+0

@MartijnPieters: Oh stavo pensando a quale modulo cercare. Ora sto leggendo il documento di os.stat - thatnks to You. – Adobe

+0

@MartijnPieters: non è un duplicato di che - dal momento che ci gente parla di data di modifica, mentre la questione come ha affermato - è giunto il momento di creazione (francamente modifica parlando - è quello che mi serve - ma ho dimenticato tutto su di esso mentre postando la domanda). – Adobe

risposta

6

È inoltre possibile utilizzare os.path.getctime. Questo esempio restituirà True se file2 e False in caso contrario è stato creato .

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

EDIT: Si noti che there is no cross platform solution to your question - ctime() in Unix significa l'ultima volta il cambiamento, non crea il tempo. The same applies when using os.stat(file).st_ctime.

Here sembra essere qualcosa che potrebbe funzionare su macchine Unix.

+0

Fortunatamente non ho a che fare con Windows. – Adobe

+0

@ Adobe - ha aggiornato la risposta aggiungendo un collegamento a un'altra domanda su OSX, ma sembra un po 'trucchetto. – root

+0

@ Adobe - :) :) :) – root

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

if f1 > f2: 

controllo per ora di modifica potrebbe essere una soluzione

+0

Sembra che tu stia confrontando il tempo di modifica, non la creazione. – defuz

+3

Poiché il file può essere aggiornato per essere più recente –

+1

È opportuno tenere presente che se il file non esiste, viene generato un OSError. Sarebbe bello avvolgere in try/except block. –

0
import os 

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

Utilizzando os.stat su qualsiasi file, ti dà una serie di 10 diverse statistiche circa il file .. Una delle stat è creation time ->st_ctime .. È possibile utilizzare che per calcolare la differenza tra l'ora di creazione di due file.

>>> 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 
Problemi correlati