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