Ich möchte ein Python-Skript schreiben, mit dem ich Dateien von einem FTP-Server löschen kann, nachdem sie ein bestimmtes Alter erreicht haben. Ich habe das Skript unten vorbereitet, aber es gibt die Fehlermeldung: WindowsError: [Error 3] The system cannot find the path specified: '/test123/*.*'
Hat jemand eine Idee, wie Sie dieses Problem lösen können? Vielen Dank im Voraus!
%Vor% OK. Angenommen, Ihr FTP-Server unterstützt den Befehl MLSD
, erstellen Sie ein Modul mit dem folgenden Code (dies ist Code aus einem Skript, das ich zum Synchronisieren einer Remote-FTP-Site mit einem lokalen Verzeichnis verwende):
Wenn Sie an den Dateien eines Verzeichnisses arbeiten möchten, können Sie:
%Vor%Dies sollte tun, was Sie wollen.
Wenn das nun rekursiv funktioniert, müssen Sie die folgenden zwei Änderungen im Code für "single directory case" vornehmen:
%Vor%und
%Vor% Die Server, mit denen ich gearbeitet habe, hatten keine Probleme mit relativen Pfaden in den Befehlen STOR
und DELE
, also hat site.delete
mit einem relativen Pfad auch funktioniert. Wenn Ihr FTP-Server pfadlose Dateinamen erfordert, sollten Sie zuerst .cwd
an die path
, .delete
die Ebene ftpfile.name
und dann .cwd
an den Basisordner zurückgeben.
Ich musste das machen und es dauerte eine Weile, dachte ich könnte hier Zeit sparen. Wir verwenden Python mit installiertem ftputil-Modul:
%Vor%OK, lieber als den Code, den Sie weiter gepostet haben, zu analysieren, hier ist ein Beispiel, das Sie auf den richtigen Weg bringen könnte.
%Vor%Führen Sie es aus und Sie erhalten so etwas ausgegeben, was ein Anfang sein sollte für das, was Sie erreichen möchten. Um es zu beenden, müssten Sie das erste Ergebnis in eine Datetime parsen, mit "now" vergleichen und ftp.delete () verwenden, um die Remote-Datei loszuwerden, wenn sie zu alt ist.
%Vor%Nun, es sieht so aus, als ob der Fehler, den Sie sehen, damit zu tun hat, dass Sie versuchen, das Verzeichnis "test123" von Ihrem lokalen Rechner zu entfernen, nicht die FTP-Site. Die FTP-Dokumente haben eine Methode namens löschen , und das ist es, was Sie verwenden möchten um die Datei zu entfernen. Was das Testen betrifft, ob etwas 7 Tage alt ist oder nicht, müssen Sie diese Dateien tatsächlich vorübergehend vom FTP herunterladen und dann die Änderungszeiten überprüfen, bevor Sie FTP.delete verwenden.
Tags und Links python delete-file file ftp