ftplib, filezilla et utf8
Hello,
J'essaye d'écrire un script pour copier/mirrorer un répertoire local sur un site FTP distant avec la librairie standard ftplib en python 3.2.
Ca marche bien, sauf les accents !
J'ai déjà copié une partie avec Filezilla, où le serveur est configuré en UTF8. Mais je n'arrive pas à traiter les fichiers ou les répertoires avec des accents, l'encodage ne semble pas le même.
Mon script :
Code:
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
|
# -*- coding:utf-8 -*-
from ftplib import FTP
import sys
USER = 'user'
PASS = 'pwd'
SERVER = 'server.dns.com'
PORT = 21
print("connection")
ftp = FTP()
ftp.connect(SERVER, PORT)
ftp.login(USER, PASS)
print("etat", ftp.getwelcome())
ftp.set_pasv(True)
ftp.sendcmd("OPTS UTF8 ON") # pour passer en UTF8 comme dans Filezilla
ftp.cwd('/test')
#le répertoire /test distant contient uniquement un fichier tést.txt
print("test création répertoire avec accents")
ftp.mkd("aéo1")
ftp.sendcmd("MKD aéo2") # autre méthode ...
print("test récupération des éléments du répertoire")
x=ftp.nlst()
print(x)
# ['.', '..', 'aéo1', 'aéo2', 'tést.txt']
# résultats sous filezilla :
# en forçant l'UTF8, on a aéo1 aéo2 tést.txt mais impossible de rentrer / modifier les répertoires aéo1 et aéo2.
# sinon avec le jeu de caractères local : aéo1 aéo2 et tést.txt
# test avec encodage UTF8 ... enfin je crois j'ai vu ça quelquepart ...
cmd="MKD aéo3"
ftp.sendcmd(cmd.encode('utf-8'))
# erreur TypeError: can't concat bytes to str
ftp.quit() |
Là je suiis perdu :aie:
Il me semblait qu'en v3 python les chaînes de caractères étaient par défaut codées en UTF8 ...
:help:
Comment je peux récupérer les noms des fichiers avec les bons accents sur le serveur FTP ?
Merci