OVH Cloud OVH Cloud

Noms de fichiers particuliers dans une archive zip

2 réponses
Avatar
Fouff
Bonjour à toutes et à tous.

Je suis sous win2000 avec python 2.4.1.
J'utilise le module zipfile de ce cher python.


Maintenant, le problème ;) :
J'ai à compresser un certain répertoire contenant des fichiers et sous-répertoires avec des noms
"bâtards" comme "rlts à rouleaux coniques"".
Mon soucis est que ces noms apparaissent dans l'archive comme : "rlts Ó rouleaux coniques".
N'étant pas détenteur des dits fichiers, je ne peux pas les renommer (ce que je m'empresserais de
faire autrement !!!).


Ligne écrivant mon fichier dans l'archive :
>>> zip.write(filename=nom_du_fichier, arcname=None, compress_type=zipfile.ZIP_DEFLATED)


Si quelqu'un avait une vague idée d'une astuce pour pallier à ce problème, je suis évidemment
preneur :) .

Cordialement.
Fouff

2 réponses

Avatar
ftc
Bonjour à toutes et à tous.

Je suis sous win2000 avec python 2.4.1.
J'utilise le module zipfile de ce cher python.


Maintenant, le problème ;) :
J'ai à compresser un certain répertoire contenant des fichiers et
sous-répertoires avec des noms
"bâtards" comme "rlts à rouleaux coniques"".
Mon soucis est que ces noms apparaissent dans l'archive comme : "rlts Ó
rouleaux coniques".


Il semble que le module zipfile n'accepete que les noms accentués venant
du dos.

Il faut donc convertir les noms avant:

def win2dos(s):
return unicode(s,'cp1252').encode('cp850','replace')

zip = zipfile.ZipFile( 'test.zip', 'w', zipfile.ZIP_DEFLATED )

for f in os.listdir('dir'):
zip.write( "dir/%s" % (f), "dir/%s" % (win2dos(f)),
zipfile.ZIP_DEFLATED )

Avatar
Fouff
Bonjour à toutes et à tous.

Je suis sous win2000 avec python 2.4.1.
J'utilise le module zipfile de ce cher python.


Maintenant, le problème ;) :
J'ai à compresser un certain répertoire contenant des fichiers et
sous-répertoires avec des noms
"bâtards" comme "rlts à rouleaux coniques"".
Mon soucis est que ces noms apparaissent dans l'archive comme : "rlts
Ó rouleaux coniques".


Il semble que le module zipfile n'accepete que les noms accentués venant
du dos.

Il faut donc convertir les noms avant:

def win2dos(s):
return unicode(s,'cp1252').encode('cp850','replace')

zip = zipfile.ZipFile( 'test.zip', 'w', zipfile.ZIP_DEFLATED )

for f in os.listdir('dir'):
zip.write( "dir/%s" % (f), "dir/%s" % (win2dos(f)),
zipfile.ZIP_DEFLATED )


Super, cette p'tite win2dos(s) fonctionne à merveille.
Un grand MERCI