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.