Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

zipfile et fichier unicode

13 réponses
Avatar
Do Re Mi chel La Si Do
Bonsoir !

zipfile est-il compatible, avec des fichiers dont le nom est en Unicode ?

Cela fait 1 heure que je tente de créer un fichier compressé, à partir d'un
fichier dont le nom est en cyrillique. Et, au mieux, j'ai la TB suivant :


Traceback (most recent call last):
File "D:\dev\Python\zipuni.py", line 7, in ?
z.write(f)
File "C:\Python24\lib\zipfile.py", line 412, in write
self.fp.write(zinfo.FileHeader())
File "C:\Python24\lib\zipfile.py", line 166, in FileHeader
return header + self.filename + self.extra
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc5 in position 10:
ordinal not in range(128)


@-salutations

Michel Claveau

3 réponses

1 2
Avatar
Amaury

# -*- coding: utf-8 -*-

import zipfile
z=zipfile.ZipFile("aaa.zip",'w',zipfile.ZIP_DEFLATED)
z.write(u'c:u???.pdf')



Ce n'est pas vraiment une solution, mais il est peut-etre possible de
creer l'archive dans un fichier temporaire puis de le renommer/deplacer
avec son nom en cyrillique.



Essaie d'utiliser la version à deux arguments:
z.write( filename, arcname )
Le premier est le nom du fichier sur le disque, le second est le nom
dans le zip.
ça permet de couper le problème en 2...

--
Amaury


Avatar
Do Re Mi chel La Si Do
Bonsoir !

il faut donc encoder le nom en cp437
Aaaaarrrggghhh ! ça va être coton, avec mes noms de fichiers en



cyrillique...

Et moi qui voulait me mettre aux hiéroglyphes...

Je vais peut-être glisser un message sur clp, pour exciter les ricains.


@-salutations

Michel Claveau



Avatar
Guillaume Bouchard
Do Re Mi chel La Si Do wrote:
Bonsoir !


Bonsoir.

Effectivement, c'est une idée. Disons que ça me permettra d'attendre Python
2.5, et son projet de refonte de ziplib.


Il y a une autre solution envisageable qui te permettra d'éviter python
2.5 et de garder tes noms en caractères exotiques (non-ascii) et
d'utiliser tar + bz2/gz/bz tous fournit dans la lib standard et qui
(normalement) gerent les chars utf-8.

Maitenant il faut voir si tu est indépendant de choix techniques imposés
pour ce problème...

--
Guillaume.

1 2