IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Telechargement Recursive -- ftplib


Sujet :

Python

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2012
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Août 2012
    Messages : 15
    Points : 13
    Points
    13
    Par défaut Telechargement Recursive -- ftplib
    bonjours, voila j'avais besoin de telecharger en ftp touts les fichiers, dossiers, sous-dossier, d'un dossier parent, j'ai fait ce script mais il me semble mal fait, je demande votre avis :


    self --> la session ftp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    def RecursiveDownload(self, baseDir):
            self.cwd(baseDir)
     
            data = [item for item in self.nlst() if item != "." and item != ".."]
            dirs = []
            files = []
     
            for i in data:
                try:
                    self.cwd(i)
                    self.cwd("..")
                    dirs.append(i)
                except:
                    files.append(i)
     
            for file in files:
                with open(file, "wb") as fileObject:
                    self.retrbinary("RETR " + file, fileObject.write)
                    print(os.getcwd() + file + "--> 100%")
     
     
            for directory in dirs:
                try:
                    os.chdir(directory)
                except:
                    os.mkdir(directory)
                    os.chdir(directory)
                self.RecursiveDownload(directory)
                self.cwd("..")
                os.chdir("..")

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 480
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 480
    Points : 9 277
    Points
    9 277
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    La logique d'ensemble semble respectée, mais il est toujours difficle de vérifier que ça marche sans essayer.

    Voilà ce que j'utilise (Python 2.7):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    def download(ftp, repsrc, repdst):
     
        # création du répertoire sur disque s'il n'existe pas encore
        if not os.path.exists(repdst):
            os.mkdir(repdst) 
     
        # trouver les noms de fichiers et sous-répertoires du répertoire distant
        fics, reps = [], []
        for nom in ftp.nlst(repsrc):
            if os.path.basename(nom) in ['.', '..']:
                continue
            try:
                ftp.cwd(nom) # si échec: c'est un fichier
                reps.append(nom)    
            except ftplib.error_perm:
                fics.append(nom)
     
        # téléchargement des fichiers
        for fic in fics:
            nf = os.path.join(repdst, os.path.basename(fic))
            with open(nf, 'wb') as f:
                ftp.retrbinary('RETR '+fic, f.write)
     
        # téléchargement récursif des répertoires et de leur contenu
        for rep in reps:
            download(ftp, rep, os.path.join(repdst, os.path.basename(rep)))
    Exemple d'utilisation:

    ftp = variable de la connexion FTP avec session ouverte
    repsrc = "/web/test" =>répertoire source sur le serveur ftp
    repdst = r"D:\Python\Pydev\ftp\download\test" =>répertoire destination sur le disque du PC

Discussions similaires

  1. [COMPILATION][RECURSIVE] outil ?
    Par narmataru dans le forum Build
    Réponses: 6
    Dernier message: 14/01/2009, 15h05
  2. [ftplib] Prob de telechargement en ftp
    Par DiGiTAL_MiDWAY dans le forum Réseau/Web
    Réponses: 4
    Dernier message: 09/12/2004, 17h53
  3. telechargement Qmail
    Par vedder dans le forum Développement
    Réponses: 2
    Dernier message: 12/01/2004, 20h24
  4. [BDE] Ou peut-on telecharger le Borland Database Engine?
    Par Robert A. dans le forum Autres SGBD
    Réponses: 2
    Dernier message: 27/05/2003, 10h01
  5. [VB6] [Réseau] Prendre le contrôle d'un téléchargement
    Par Tchetch dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 22/10/2002, 14h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo