2009-07-10 13 views
3

J'ai googlé mais je ne pouvais trouver comment télécharger un fichier ... et j'essaye de télécharger tous les fichiers du répertoire local vers le répertoire ftp distant. Des idées pour y parvenir?Python ftplib - télécharger plusieurs fichiers?

+0

https://gist.github.com/dnozay/37e8148ee748068afb91 - copie récursive. – dnozay

Répondre

10

avec la boucle?

modifier: dans le cas du téléchargement de fichiers universel seulement ressemblerait à ceci:

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')) 

De toute évidence, vous avez besoin de regarder pour les collisions de noms si vous êtes juste en conservant les noms de fichiers comme celui-ci.

+0

C'est un script qui mettrait le site Web à l'hôte ... disons que j'ai le site Web dans un répertoire sur mon disque dur local et je veux télécharger son contenu mais pas avec le répertoire, seulement les fichiers afin que mon site soit téléchargé myaddress.com au lieu de myaddress.com/somedirectory – Phil

+0

ftp.storebinary doit être ftp.storbinary. (p.s. thanks!) – Matt

-1

Créez un fichier de traitement par lots FTP (avec une liste de fichiers que vous devez transférer). Utilisez python pour exécuter ftp.exe avec l'option "-s" et passez dans la liste des fichiers.

Ceci est kludgy mais apparemment le FTPlib n'accepte pas plusieurs fichiers dans sa commande STOR.

Voici un exemple de fichier batch ftp.

*

OPEN inetxxx 
myuser mypasswd 
binary 
prompt off 
cd ~/my_reg/cronjobs/k_load/incoming 
mput *.csv 
bye 
  • Si le contenu ci-dessus étaient dans un fichier appelé "abc.ftp" - alors ma commande ftp serait

    ftp -s abc.ftp

Espérons que cela aide.

+0

... Je suis sous Linux;) – Phil

+0

J'ai impliqué un fichier myftp.ftp en tant que fichier 'batch' et non en tant que fichier ".bat" spécifique à MSDOS. Ce fichier contiendra une liste de commandes ftp (et pas de commandes spécifiques au système d'exploitation). Par exemple, voici une de mes - OUVERT inetxxx myuser mypasswd binaire rapidement hors cd ~/my_reg/cronjobs/k_load/entrant mput *.csv bye – blispr

+0

de cette façon n'est pas portable, et pourquoi utiliser un autre client FTP quand Python a le sien. Pour plusieurs, faites comme SilentGhost. – ghostdog74

0

Regardez Python-scriptlines required to make upload-files from JSON-Call et à côté FTPlib-operation: why some uploads, but others not?

Bien une autre position de départ de votre question, dans la Réponse de cette première URL que vous voyez une construction par exemple pour télécharger par ftplib un fichier JSON-plus un fichier XML : regardez scriptline 024 et plus loin.

Dans la deuxième URL, vous voyez d'autres aspects liés au téléchargement de plusieurs fichiers.

Également applicable pour d'autres types de fichiers que json et xml, évidemment avec une 'entrée' différente avant les deux dernières sections qui définissent et réalisent la fonction FTP_Upload.

Questions connexes