2012-10-10 30 views
9

Duplicar posibles:
python: which file is newer & by how much time¿Comprueba si el archivo es más reciente que algún otro archivo?

en Python - ¿Cómo verifico - si el archivo es más reciente y luego algún otro archivo?

Editar:

Hay tiempo de creación y fecha de modificación.

La pregunta debe indicar explícitamente la propiedad deseada.

Modificación

  • os.stat(FILE).st_mtime

  • os.path.getmtime(FILE)

Creación

os.path.getctime(FILE) y os.stat(FILE).st_ctime no le da tiempo de creación de sistemas operativos basados ​​en Unix. Link por root tiene la solución sobre cómo averiguar el tiempo de creación en cajas tipo Unix.

+2

¿Qué ha intentado hasta ahora? Las operaciones de archivos como esta generalmente se resuelven fácilmente con el ['módulo de os'] (http://docs.python.org/library/os.html). –

+0

@MartijnPieters: Oh, estaba pensando en qué módulo buscar. Ahora estoy leyendo el documento de os.stat - thatnks to You. – Adobe

+0

@MartijnPieters: no es un duplicado de eso, ya que las personas hablan sobre el tiempo de modificación, mientras que la pregunta tal como se dijo, es sobre el tiempo de creación (modificación francamente hablando, es lo que necesito), pero lo olvidé por completo mientras publicas la pregunta). – Adobe

Respuesta

6

También puede utilizar os.path.getctime. Este ejemplo devolverá True si se creó file1 antes de file2 y False en caso contrario.

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

EDIT: Tenga en cuenta que there is no cross platform solution to your question - ctime() en Unix significa tiempo del último cambio, no crea el tiempo. The same applies when using os.stat(file).st_ctime.

Here parece ser algo que podría funcionar en máquinas Unix.

+0

Afortunadamente no tengo que lidiar con Windows. – Adobe

+0

@ Adobe - actualizó la respuesta agregando un enlace a otra pregunta sobre OSX, pero parece ser un poco hackish. – root

+0

@ Adobe - :) :) :) – root

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

if f1 > f2: 

cheque por hora de modificación podría ser una solución

+0

Parece que está comparando el tiempo de modificación, no la creación. – defuz

+3

Porque el archivo puede actualizarse para ser más reciente –

+1

Es bueno tener en cuenta que si el archivo no existe, arroja un OSError. Sería bueno envolver en try/except block. –

0
import os 

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

Usando os.stat en cualquier archivo, le da un conjunto de 10 diferentes estadísticas sobre su archivo .. Uno de los STAT es creation time ->st_ctime .. Puede utilizar eso para calcular la diferencia entre el tiempo de creación de dos archivos.

>>> 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 
Cuestiones relacionadas