2012-07-05 10 views
33

Tengo un script de Python que descarga un archivo a través de FTP usando ftplib.¿cómo puedo establecer la última hora modificada de un archivo de python?

Mi código de descarga actual se parece al ejemplo en la documentación lib ftp:

ftp.retrbinary('RETR README', open('README', 'wb').write) 

Ahora tengo un requisito de que el archivo descargado a través de FTP tiene que tener la misma fecha de última modificación que el archivo en el Servidor FTP en sí Suponiendo que pudiera analizar el tiempo desde ftp.retrlines('list'), ¿cómo puedo configurar la hora modificada en el archivo descargado?

Estoy en un sistema operativo basado en Unix si eso importa.

Respuesta

43

Si quieres hacer esto directamente desde python, estás buscando os.utime. El docs puede darle más información.

+0

eso es lo que estaba buscando, gracias – jdeuce

4

Hay 2 formas de hacerlo. Uno es el ejemplo de os.utime que se requiere si está configurando la marca de tiempo en un archivo que no tiene estadísticas de referencia. Sin embargo, si está copiando los archivos con "shutil.copy()", tiene un archivo de referencia . Luego, si desea los bits de permiso, la hora del último acceso, hora de la última modificación, y los indicadores también se copiaron, puede usar "shutil.copystat()" inmediatamente después de "shutil.copy()".

No tengo idea de por qué no agregan banderas a "shutil.copy()" que hace esto en un solo comando. Parece que fue implementado por diferentes autores. Uno implementó la copia y uno implementó el copystat para completar la función faltante en el primero.

Y luego está "shutil.copy2" que está destinada a hacer ambas cosas a la vez ...

19

Uso os.utime:

import os 

os.utime(path_to_file, (access_time, modification_time)) 
+0

ejemplo más elaborado: https://www.tutorialspoint.com/python/os_utime.htm – kashiraja

Cuestiones relacionadas