¿Cómo puedo configurar la última hora de modificación de un archivo desde Python?

Tengo un script en python que descarga un archivo a través de FTP usando ftplib .

Mi código de descarga actual se parece al ejemplo en los documentos ftp lib:

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

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

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

Utilice os.utime :

 import os os.utime(path_to_file, (access_time, modification_time)) 

Si quieres hacer esto directamente desde python, estás buscando os.utime . Los documentos pueden darle más información.

Hay 2 formas de hacer esto. Uno es el ejemplo de os.utime anterior 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 que los bits de permiso, la última hora de acceso, la última hora de modificación y las banderas también se copien, puede usar “shutil.copystat ()” inmediatamente después de “shutil.copy ()”.

No tengo idea de por qué no agregan indicadores a “shutil.copy ()” que hace esto en un solo comando. Parece que fue implementado por diferentes autores. Uno implementó la copia y otro implementó el copystat para completar la característica faltante en el primero.

Y luego está “shutil.copy2” que pretende hacer ambas cosas a la vez …