Python ftplib - upload de vários arquivos?
Pergunta
Eu pesquisei, mas eu só poderia encontrar como fazer upload de um arquivo ... e eu estou tentando fazer o upload de todos os arquivos do diretório local para o diretório de FTP remoto. Alguma idéia de como conseguir isso?
Solução
com o loop?
Editar : no caso de envio universal apenas arquivos ficaria assim:
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'))
Obviamente, você precisa de olhar para fora colisões de nomes se você está apenas preservando os nomes de arquivos como esta.
Outras dicas
python-scriptlines necessário para fazer upload de -limas de JSON-Call e próxima ftplib-operação: por que alguns envios, mas outros não?
Embora uma posição diferente de partida de sua pergunta, na Resposta ??strong> desse primeiro URL que você veja um exemplo de construção para fazer o upload por ftplib um json-file, mais um arquivo xml: olhada scriptline 024 e ainda mais.
Na segunda url você vê alguns outros aspectos relacionados com o upload de mais arquivos.
Além disso aplicável a outros tipos de arquivos que JSON e XML, obviamente, com uma 'entrada' diferente antes das 2 últimas seções que definem e realizam a função FTP_Upload.
Criar um arquivo de lote FTP (com uma lista de arquivos que você precisa para transferência). Use python para executar ftp.exe com o "-s" opção e passar na lista de arquivos.
Esta é kludgy mas aparentemente o ftplib não tem aceitar múltiplos arquivos em seu comando STOR.
Aqui está um arquivo de lote ftp amostra.
*
OPEN inetxxx
myuser mypasswd
binary
prompt off
cd ~/my_reg/cronjobs/k_load/incoming
mput *.csv
bye
-
Se o conteúdo acima estavam em um arquivo chamado "abc.ftp" - então meu comando ftp seria
ftp -s abc.ftp
Espero que ajude.