Python ftplib - mehrere Dateien hochladen?
Frage
Ich habe gegoogelt, aber ich konnte nur feststellen, wie eine Datei laden ... und ich versuche, alle Dateien aus lokalem Verzeichnis auf Remote-FTP-Verzeichnis zu laden. Irgendwelche Ideen, wie dies zu erreichen?
Lösung
mit der Schleife?
Bearbeiten : in universal Fall des Hochladen von Dateien nur würde wie folgt aussehen:
import os
for root, dirs, files in os.walk('path/to/local/dir'):
for fname in files:
full_fname = os.path.join(root, fname)
ftp.storbinary('STOR remote/dir' + fname, open(full_fname, 'rb'))
Natürlich müssen Sie für Namenskollisionen achten, wenn Sie nur die Dateinamen wie diese zu erhalten.
Andere Tipps
Lesen Sie Python-scriptlines erforderlich Upload machen -Dateien von JSON-Call und neben ftplib-Betrieb: warum einige Uploads, aber andere nicht?
Obwohl eine unterschiedliche Ausgangsposition als Ihre Frage, in der Antwort diese ersten URL Sie sehen ein Beispiel Konstruktion zum Hochladen von ftplib JSON-Datei sowie eine XML-Datei: Blick auf scriptline 024 und weiter.
In der zweiten URL Sie einige andere Aspekte sehen im Zusammenhang von mehreren Dateien laden.
Auch für andere Dateitypen als json und xml, offenbar mit einem anderen ‚Eintrag‘ vor den zwei letzten Abschnitten, die die FTP_Upload-Funktion zu definieren und realisieren.
Erstellen Sie eine FTP-Batch-Datei (mit einer Liste von Dateien, die Sie übertragen müssen). Verwenden Sie Python ausführen ftp.exe mit dem „-s“ Option und übergeben Sie in der Liste der Dateien.
Dies ist kludgy aber anscheinend die ftplib nicht mehrere Dateien in seinem STOR Befehl akzeptieren.
Hier ist ein Beispiel FTP-Batch-Datei.
*
OPEN inetxxx
myuser mypasswd
binary
prompt off
cd ~/my_reg/cronjobs/k_load/incoming
mput *.csv
bye
-
Wenn die oben genannten Inhalte in einer Datei sind "abc.ftp" genannt - dann würde mein ftp-Befehl sein
ftp es abc.ftp
Ich hoffe, das hilft.