2017-03-14 1 views
0

Ich muss Dateien basierend auf ihrem Zeitstempel vom vorherigen Tag herunterladen, da die Benennung der Datei, die das Datum innerhalb des Dateinamens enthält manchmal in einen anderen Tag blutet.Python Dateien von FTP basierend auf dem Datum der Datei

Python 2.7 unter Windows verwenden, um eine Verbindung zu einem FTP-Server herzustellen, der auf IIS ausgeführt wird.

Hier ist mein Code:

import os, time 
from ftplib import FTP 

ftp = FTP('example.com')  # connect to host, default port 
ftp.login("user", "pass") 

ftp.set_pasv('true') 
ftp.cwd('TestFolder')    # change into "TestFolder" directory 
ftp.retrlines('LIST')   # list directory contents 

ftp.quit() 

Es verbindet und ich kann die Liste des Ordners abzurufen und es sieht wie folgt aus:

03-13-17 10:00PM     1337 X1234_20170313220001_1.zip 
03-13-17 11:00PM    279579 X1234_20170313230001_1.zip 
03-13-17 11:00PM    85477 X1234_20170313230001_2.zip 
03-14-17 01:00AM    67923 X1234_20170314010001_1.zip 
03-14-17 02:00AM    29524 X1234_20170314020001_1.zip 
03-14-17 05:00AM    16022 X1234_20170314050001_1.zip 
03-14-17 06:00AM    11272 X1234_20170314060002_1.zip 

Wenn heute 03-14-17, wie lade ich alle Dateien mit dem Datumsstempel 03-13-17 in einen lokalen Ordner herunter?

+0

So etwas wie für Datei in Dateien zu helfen: if (datetime.datetime.now() - Filetimestamp (Datei)) .days == 1: downloadFile (Datei) –

+0

Ich verstehe Ihren Pseudocode, weiß aber nicht, wie man mit ftplib implementiert. – Brad

Antwort

0

Wenn der FTP-Server MLSD unterstützt, können Sie Folgendes versuchen.

Dann würden Sie nur den Inhalt analysieren, ein Datetime-Objekt abrufen und das vergleichen.

modified_date = datetime.date.fromtimestamp(entry[(entry.index('=') + 1):entry.index(';')]) 

Andernfalls, wenn Sie können Sie eine Bibliothek verwenden könnte mit diesem wie ftputil http://ftputil.sschwarzer.net/trac

+0

Ich habe versucht, ftp.retrlines ('MLSD') früher, wenn Sie durch die Dokumentation, aber ich habe einen Fehler, so dass ihre FTP-Server MLSD möglicherweise nicht unterstützt. Es läuft auf IIS, das ist alles, was ich für jetzt weiß. – Brad

Verwandte Themen