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

Réseau/Web Python Discussion :

[..] Récursivité sur FTP


Sujet :

Réseau/Web Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 10
    Par défaut [..] Récursivité sur FTP
    Bonjour à tous,

    Voici mon problème : je cherche à rapatrier tous les répertoires et fichiers contenus dans un répertoire de mon serveur FTP et cela de manière récursive. Mais cela ne marche pas et je ne comprends pas pourquoi.

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    # -*- coding: utf-8 -*-
    import os
    import ftplib
     
    #
    #   Rapatriement du contenu d'un repertoire
    #
     
    def download(pathsrc, pathdst):
        #lenpathsrc = len(pathsrc)
        def _download(pathsrc):
            lenpathsrc = len(pathsrc)
            print lenpathsrc
            print 'pathsrc ' + pathsrc
            try:
                l = ftp.nlst(pathsrc)
                print 'ici'
                print l
                print 'ou suis je repertoire ' + ftp.pwd()
                try :
                    print i
                except:
                    print '1er lancement'
                for i in l:
                    print('')
                    print 'Fichier en cours : '+i
                    print('')
                    try:
                        ftp.cwd(i)
                        ftp.cwd("..")
                        ftp.cwd("..")
                        print 'ou suis je repertoire 2 ' + ftp.pwd()
                        print('..................... repertoire .........................')
                        os.makedirs(pathdst+os.sep+(i[lenpathsrc:]))
                        print 'creation du repertoire ' + i
                        _download(i)
                    except:
                        print('..................... fichier .........................')
                        try:
                            ftp.retrbinary('RETR '+i, open(pathdst+os.sep+(i[lenpathsrc:]), 'wb').write)
                            print 'creation du fichier ' + i
                        except:
                            print 'ou suis je repertoire ' + ftp.pwd()
                            print 'pas de fichier dans le repertoire ' + os.path.normpath(i)
            except:
                print 'il n''y a pas d''elemnts dans le repertoire en cours'
     
        _download(pathsrc)
        print 'fin du programme'
     
     
     
    ftp = ftplib.FTP('')
    ftp.connect(monadresse, monport)
    ftp.login(monlogin, monpassword)
    #ftp.cwd(cheminsource)
     
    download(cheminsource, chemindestination)
    Au fait pour info : je ne peux pas utiliser la commande ftp size sur mon serveur FTP (je le signale au cas ou).

    Lorsque j'execute mon code il fonctionne à condition que chaque répertoire contienne au moins un fichier. Mon problème apparaît donc lorsque mon répertoire sur le serveur est vide.

    Si quelqu'un a une idée, je suis preneur !!!!!

    Bonne journée et par avance merci.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 10
    Par défaut
    Bonjour à tous !!!

    J'ai contourné mon problème principal qui était la gestion des répertoires vides (pb de timeout) en rajoutant dans mon dernier except une reconnexion automatique au serveur.

    Mais bon je trouve cette solution un peu trop facile à mon goût et en plus elle ne rêgle pas le temps que le serveur perdu lors du timeout du serveur.

    Quelqu'un a t'il une autre idée ??

    Bonne journée

Discussions similaires

  1. [C#] [FTP] Envoi et suppression fichier sur ftp NON ANONYME!
    Par djsbens dans le forum Windows Forms
    Réponses: 14
    Dernier message: 30/03/2005, 10h20
  2. telechargement auto a envoyer sur ftp
    Par landiranais dans le forum Windows
    Réponses: 4
    Dernier message: 28/05/2004, 13h52

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