IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

ZIP et unicode


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 328
    Par défaut ZIP et unicode
    Bonjour à tous,

    J'utilise ZIPFILE pour créer des archives ZIP. Malheureusement, les noms de fichiers en unicode ne passent pas bien.

    D'après mes recherches sur le web, c'est un bug de Python. Mais je ne sais pas s'il a été résolu à ce jour ou s'il y a une manip spéciale à faire...

    Auriez-vous une idée ?

    Merci pour vos réponses

  2. #2
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    Salut Ggamer,

    peux-tu poster un exemple qui pose problème?

    @+

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 328
    Par défaut
    Salut Pacificator,

    L'exemple est très simple :

    Le fichier que je souhaite zipper est par exemple : "télévision.txt"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    fichierZip = zipfile.ZipFile("test.zip", "w", compression=zipfile.ZIP_DEFLATED)
    fichierZip.write("c:\", u"télévision.txt")
    Dans le zip, j'aurai en fait un fichier qui porte le nom "tùlùvision.txt" !

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 328
    Par défaut
    A priori, il y a avait ce bug sur la version 2.4 de Python. Mais je ne sais pas pour la version 2.5...

    Sinon, j'ai trouvé ceci :

    Note: There is no official file name encoding for ZIP files. If you have unicode file names, please convert them to byte strings in your desired encoding before passing them to write(). WinZip interprets all file names as encoded in CP437, also known as DOS Latin.
    J'ai essayé de convertir mes noms de fichiers en CP437. Mais je n'arrive pas

  5. #5
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    Quand je regarde l'aide:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Help on method write in module zipfile:
     
    write(self, filename, arcname=None, compress_type=None) unbound zipfile.ZipFile method
        Put the bytes from filename into the archive under the name
        arcname.
    J'ai testé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    >>> import zipfile
    >>> open('télevision.txt', 'w').write("\n".join(["ligne %i" % i for i in range(60)]))
    >>> 
    >>> 
    >>> 
    >>> fz = zipfile.ZipFile("test.zip", 'w', compression=zipfile.ZIP_DEFLATED)
    >>> help(fz.write)
     
    >>> fz.write('télevision.txt', arcname="télévision.txt")
    >>> fz.close()
    et j'ai pas eu de problème.

    Je suis sous ubuntu, j'ouvre l'archive avec File Roller, la gestion des noms de fichiers est peut-être differente?

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 328
    Par défaut
    Aie...

    (J'ai ouvert mon archive ZIP avec le dézippeur de Windows + 7zip : même effet !)

    Sinon tu as essayé avec quelle version de Python ? 2.5 ou 2.6 ?

  7. #7
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    Sinon tu as essayé avec quelle version de Python ? 2.5 ou 2.6 ?
    J'utilise python2.5.

    Je ne comprends pas trop ta syntaxe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fichierZip.write("c:\", u"télévision.txt")
    Il manque un truc après C:\, non? (juste pour être sur).

    Si tu enléves le u devant u"télévision.txt"?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. décompresser des .zip
    Par Nico65 dans le forum C++
    Réponses: 3
    Dernier message: 30/11/2004, 14h51
  2. [Unicode] Internationalisation d'une application
    Par Thierry Laborde dans le forum Langage
    Réponses: 4
    Dernier message: 21/10/2003, 20h15
  3. Archive::Zip
    Par Cyspak dans le forum Modules
    Réponses: 2
    Dernier message: 09/09/2003, 13h34
  4. conversion Unicode -> ASCII
    Par juzam dans le forum C
    Réponses: 8
    Dernier message: 24/07/2003, 10h07
  5. [debutant] unicode
    Par dadou91 dans le forum XML/XSL et SOAP
    Réponses: 7
    Dernier message: 23/05/2003, 10h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo