python python-2.7 datetime ftp ftplib

Cómo obtener el tiempo de modificación del archivo FTP usando Python ftplib



python-2.7 datetime (2)

MLST o MDTM

Si bien puede recuperar una marca de tiempo de un archivo individual a través de FTP con comandos MLST o MDTM , ninguno de los dos es compatible con ftplib.

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)

MLSD

El único comando admitido explícitamente por la biblioteca ftplib que puede devolver la marca de tiempo del archivo estandarizado es MLSD través del método FTP.mlsd . Aunque su uso tiene sentido solo si desea recuperar marcas de tiempo para más archivos.

  • Recupere una lista completa del directorio usando MLSD
  • Busque en la colección devuelta los archivos que desea
  • Recuperar modify hecho
  • Analízalo según la especificación, YYYYMMDDHHMMSS[.sss]

Para más detalles, consulte RFC 3659 , en particular:

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.

Nuevamente, 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 de qué calendario haya estado en uso en la fecha y hora indicadas en la ubicación del servidor-PI.

LISTA

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.

Una lista común * 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))

Encontrar el último archivo

Consulte también Python FTP para obtener el archivo más reciente por fecha .

Estoy tratando de 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).


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 ftp.dic.com

  • los comandos de cd van al directorio correcto
  • Comando SITE para mover el modo de comando extendido
  • UTIME somefile.txt 20050101123000 20050101123000 20050101123000 UTC

cambiar el tiempo de acceso, el tiempo 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

Siéntase libre de sentarse y desearle un agradable viaje en el tiempo :)