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 :

Ftp telechargement probleme


Sujet :

Réseau/Web Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 85
    Par défaut Ftp telechargement probleme
    Bonjour je créer un script qui me permet de télécharger des fichiers sur un ftp, tout fonctionne sauf que les fichiers coller dans ma machine manque la 1er lettre au nom du fichier par exemple fichier.jpg devient ichier.jpg c'est contraignant -.-
    j'ai pris l'exemple de la FAQ mon script :

    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
    def download(pathsrc, pathdst):
        lenpathsrc = len(pathsrc)
        def _download(pathsrc):
            l = ftp.nlst(pathsrc)
            for i in l:
                try:
                    ftp.size(i)
                    print i 
                    ftp.retrbinary('RETR '+i, open(pathdst+os.sep+i[lenpathsrc:], 'wb').write)
                except:
                    try: os.makedirs(pathdst+os.sep+os.path.dirname(i[lenpathsrc:]))
                    except: pass
                    _download(i)
        _download(pathsrc)
     
     
    ftp = ftplib.FTP('')
    ftp.connect(monadresse, monport)
    ftp.login(monlogin, monpassword)
    download("/lineage2/*", "E:/L2-L/test/")

  2. #2
    Expert confirmé
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Par défaut
    à priori c'est le lenpathsrc qui est mauvais

    essaie le donwload sans le *
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    download("/lineage2/", "E:/L2-L/test/")

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 85
    Par défaut
    Sans le * plus rien ne fonctionne =S
    Autre idée ?

  4. #4
    Expert confirmé
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Par défaut
    Peux-tu être plus explicite ? Y'a un message d'erreur ?

    Chez moi (sous windows), cela fonctionne (que je mette le "/" à la fin ou pas)

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 85
    Par défaut
    message d'erreur avec /dossier/ sans *
    est-ce que sa pose probleme que le dossier de destination sois sur une clef usb ?
    File "E:\L2-L\1.1\L2-L_CodeSource\testFTP\test.py", line 34, in _download
    _download(i)
    File "E:\L2-L\1.1\L2-L_CodeSource\testFTP\test.py", line 34, in _download
    _download(i)
    File "E:\L2-L\1.1\L2-L_CodeSource\testFTP\test.py", line 25, in _download
    l = ftp.nlst(pathsrc)
    File "C:\Documents and Settings\tsimoju1\My Documents\Private\python26\lib\ftplib.py", line 493, in nlst
    self.retrlines(cmd, files.append)
    File "C:\Documents and Settings\tsimoju1\My Documents\Private\python26\lib\ftplib.py", line 417, in retrlines
    conn = self.transfercmd(cmd)
    File "C:\Documents and Settings\tsimoju1\My Documents\Private\python26\lib\ftplib.py", line 356, in transfercmd
    return self.ntransfercmd(cmd, rest)[0]
    File "C:\Documents and Settings\tsimoju1\My Documents\Private\python26\lib\ftplib.py", line 323, in ntransfercmd
    host, port = self.makepasv()
    File "C:\Documents and Settings\tsimoju1\My Documents\Private\python26\lib\ftplib.py", line 301, in makepasv
    host, port = parse227(self.sendcmd('PASV'))
    File "C:\Documents and Settings\tsimoju1\My Documents\Private\python26\lib\ftplib.py", line 242, in sendcmd
    self.putcmd(cmd)
    File "C:\Documents and Settings\tsimoju1\My Documents\Private\python26\lib\ftplib.py", line 177, in putcmd
    self.putline(line)
    File "C:\Documents and Settings\tsimoju1\My Documents\Private\python26\lib\ftplib.py", line 172, in putline
    self.sock.sendall(line)
    File "<string>", line 1, in sendall
    RuntimeError: maximum recursion depth exceeded while calling a Python object

  6. #6
    Membre expérimenté Avatar de alexdevl
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 265
    Par défaut
    Cet appli récupère l'arborescence à partir d'un log FTP.

    J'avais rajouté cette ligne car j'avais aussi un pb d'appel récursif.
    if i[-2:]<>r"/." and i[-3:]<>r"/..":

    A adapter éventuellement


    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
     
     
    #!/usr/bin/env python
    # -*- coding: iso-8859-15 -*-
    import ftplib
     
    class FtpFree():
      def __init__(self):
        self.ftp = ftplib.FTP('')
        self.ftp.connect("ftpperso.free.fr")
        self.ftp.login("login", "password")
     
      def arbo(self,pathsrc):
        def _download(pathsrc):
          l = self.ftp.nlst(pathsrc)
          for i in l:
            try: #Si il s'agit d'un fichier
              self.ftp.size(i)
              self.arbo[pathsrc].append(i)
            except: #Si il s'agit d'un répertoire
              if i[-2:]<>r"/." and i[-3:]<>r"/..": #Vérif qu'il ne s'agit pas des en tete
                self.arbo[i]=[] # Création du nouveau répertoire
                _download(i) # Chargement des fichiers du répertoire
        self.arbo={}
        self.arbo[pathsrc]=[]
        _download(pathsrc)
        return self.arbo
     
    ftpFree=FtpFree() #Connection
    arboftp=ftpFree.arbo(r"/test/") # Création du dico à partir du path FTP
    print arboftp

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 16
    Par défaut
    je pense qu'en enlevant -1 a lenpathsrc ca doit fonctionner
    c'est pour retirer le caractère *
    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
    def download(pathsrc, pathdst):
        lenpathsrc = len(pathsrc) -1
        def _download(pathsrc):
            l = ftp.nlst(pathsrc)
            for i in l:
                try:
                    ftp.size(i)
                    print i 
                    ftp.retrbinary('RETR '+i, open(pathdst+os.sep+i[lenpathsrc:], 'wb').write)
                except:
                    try: os.makedirs(pathdst+os.sep+os.path.dirname(i[lenpathsrc:]))
                    except: pass
                    _download(i)
        _download(pathsrc)
     
     
    ftp = ftplib.FTP('')
    ftp.connect(monadresse, monport)
    ftp.login(monlogin, monpassword)
    download("/lineage2/*", "E:/L2-L/test/")
    [/QUOTE]

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 85
    Par défaut
    avec le -1 il telecharge rien et ecris dans la console le 1er fichier a telecharger en boucle.
    je test l'autre truc si je comprend ^^

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 85
    Par défaut
    Bonjour, pouvez-vous m'expliquer comment on utilise la fonction télécharger de alexdevl ou comment reparer le problème. Merci d'avance

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 85
    Par défaut
    est-ce que y'aurait pas moyen de rajouter ces lettres par apres ?

    et sa me parait grave que le script de la FAQ fonctionne pas non ?

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 85
    Par défaut
    Bon j'ai trouver la fonction pour telecharger :
    -il faut que j fasse un dir dans le repertoire
    -enregistrer tout sa dans une variable
    -garder que les nom des fichiers
    -et les télécharger un par un =P
    Très très besoin d'aide si quelqu'un a une idée svp svp svp...

    Personne ayant eu le même problème : http://www.developpez.net/forums/d34...s-repertoires/

    J'ai essayer son script mais le programme ne fait rien =(

Discussions similaires

  1. FTP Explorer Probleme de Transfer
    Par Ramdoulou dans le forum IE
    Réponses: 15
    Dernier message: 18/12/2006, 15h32
  2. [FTP] telechargement ftp avec PHP ?
    Par herguem dans le forum Langage
    Réponses: 2
    Dernier message: 25/07/2006, 18h26
  3. Réponses: 2
    Dernier message: 17/07/2006, 11h30
  4. [Protocole] FTP TelnetInputStream, probleme d'ecriture ...
    Par TMS dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 31/01/2006, 12h53
  5. Problème avec un script ftp
    Par doohan dans le forum Linux
    Réponses: 2
    Dernier message: 25/06/2003, 17h47

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