Python ftplib: caricamento di più file?
Domanda
Ho cercato su Google ma sono riuscito a trovare solo come caricare un file...e sto provando a caricare tutti i file dalla directory locale alla directory ftp remota.Qualche idea su come raggiungere questo obiettivo?
Soluzione
con il ciclo?
modifica : in caso universale caricando solo i file sarebbe simile a questa:
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'))
Ovviamente, è necessario guardare fuori per conflitti di nomi, se si sta solo conservare i nomi di file come questo.
Altri suggerimenti
Guarda a Linee di script Python necessarie per caricare file da JSON-Call e poi Operazione FTPlib:perché alcuni vengono caricati e altri no?
Sebbene una posizione di partenza diversa rispetto alla tua domanda, nel Risposta di quel primo URL vedi una costruzione di esempio per caricare tramite ftplib un file json più un file xml:guarda la scriptline 024 e oltre.
Nel secondo URL vedi alcuni altri aspetti relativi al caricamento di più file.
Applicabile anche per tipi di file diversi da json e xml, ovviamente con una "voce" diversa prima delle 2 sezioni finali che definiscono e realizzano la funzione FTP_Upload.
Creare un file batch FTP (con un elenco di file che è necessario per il trasferimento). Usare Python per eseguire ftp.exe con l'opzione "-s" e passare nella lista dei file.
Questa è kludgy ma a quanto pare la ftplib non ha accetta più file in suo comando STOR.
Ecco un file batch di esempio ftp.
*
OPEN inetxxx
myuser mypasswd
binary
prompt off
cd ~/my_reg/cronjobs/k_load/incoming
mput *.csv
bye
-
Se il contenuto di cui sopra erano in un file chiamato "abc.ftp" - poi il mio comando ftp sarebbe
ftp -s abc.ftp
La speranza che aiuta.