Estoy intentando cargar un archivo CSV en Amazon S3 con Python. Necesito saber la hora de modificación del archivo CSV. Estoy usando ftplib para conectar FTP con Python (2.7).
Si bien puede recuperar una marca de tiempo de un archivo individual a través de FTP con los comandos MLST
o MDTM
, MDTM
no admite ninguno de ellos.
Por supuesto, puede implementar MLST
o MDTM
por su cuenta utilizando FTP.voidcmd
.
Ver:
Un ejemplo simple para MDTM
:
from ftplib import FTP from dateutil import parser # ... (connection to FTP) timestamp = ftp.voidcmd("MDTM /remote/path/file.txt")[4:].strip() time = parser.parse(timestamp) print(time)
El único comando admitido explícitamente por la biblioteca ftplib que puede devolver la marca de tiempo de archivo estandarizada es MLSD
través del método FTP.mlsd
. Aunque su uso solo tiene sentido si desea recuperar marcas de tiempo para más archivos.
MLSD
modify
hecho YYYYMMDDHHMMSS[.sss]
Para obtener más información, consulte RFC 3659 , en particular el:
from ftplib import FTP from dateutil import parser # ... (connection to FTP) files = ftp.mlsd("/remote/path") for file in files: name = file[0] timestamp = file[1]['modify'] time = parser.parse(timestamp) print(name + ' - ' + str(time))
Tenga en cuenta que los tiempos devueltos por MLST
, MLSD
y MDTM
están en UTC (a menos que el servidor esté roto). Por lo tanto, es posible que deba corregirlos para su zona horaria local.
Una vez más, consulte RFC 3659 2.3. Sección de tiempos :
Los valores de tiempo siempre se representan en UTC (GMT) y en el calendario gregoriano, independientemente del calendario que se haya utilizado en la fecha y la hora indicadas en la ubicación del servidor-PI.
Si el servidor FTP no es compatible con MLST
, MLSD
y MDTM
, todo lo que puede hacer es usar un comando LIST
obsoleto. Eso implica analizar un listado propietario que devuelve.
Un listado común de * nix es como:
-rw-r--r-- 1 user group 4467 Mar 27 2018 file1.zip -rw-r--r-- 1 user group 124529 Jun 18 15:31 file2.zip
Con un listado como este, este código hará:
from ftplib import FTP from dateutil import parser # ... (connection to FTP) lines = [] ftp.dir("/remote/path", lines.append) for line in lines: tokens = line.split(maxsplit = 9) name = tokens[8] time_str = tokens[5] + " " + tokens[6] + " " + tokens[7] time = parser.parse(time_str) print(name + ' - ' + str(time))
Vea también Python FTP obtener el archivo más reciente por fecha .
Cuando quiero cambiar la hora de modificación del archivo, uso un cliente FTP en la consola. Inicie sesión en un FTP remoto ftp http://ftp.dic.com
cambie la hora de acceso, la hora de modificación, es hora de crear un directorio el 2005-01-01 12:30:00 somefile.txt
Ejemplo completo:
sitio UTIME somefile.txt 20150331122000 20150331122000 20150331122000 UTC
Por favor, siéntase libre de sentarse y desearle un agradable viaje en el tiempo 🙂