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 :

Migration de python2 vers python3


Sujet :

Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 26
    Points : 11
    Points
    11
    Par défaut Migration de python2 vers python3
    Bonjour,

    Je suis entrain de travailler sur le fichier ci-dessous. (il s'agit de quelque fonction pour manipuler une fichie xml)
    http://nlp.lsi.upc.edu/awn/AWNDatabaseManagement.py.gz
    et il prend comme entré ce fichier
    http://nlp.lsi.upc.edu/awn/awn.xml.gz

    Il est écris en 2008 avec python2 et je veux le transformer en pyhton3 sachant que J'ai utiliser le 2to3 et j'ai eu un résultat parfait. Mais, quand j'ai exécuté l'erreur ci-dessous a apparu sachant que le fichier s’exécute parfaitement avec python2.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ('processing file ', 'awn.xml')
    <_io.TextIOWrapper name='awn.xml' mode='r' encoding='cp1252'>
    Traceback (most recent call last):
      File "D:\Projets\Python\awnman.py", line 402, in <module>
        loadAWNfile(opts['i'])
      File "D:\Projets\Python\awnman.py", line 372, in loadAWNfile
        p.ParseFile(ent)
      File "D:\Logiciel\WinPython-64bit-3.4.4.5Qt5\python-3.4.4.amd64\lib\encodings\cp1252.py", line 23, in decode
        return codecs.charmap_decode(input,self.errors,decoding_table)[0]
    UnicodeDecodeError: 'charmap' codec can't decode byte 0x90 in position 100: character maps to <undefined>
    Quelqu'un me dit s'il vous plais de quoi il s'agit?

  2. #2
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2013
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2013
    Messages : 156
    Points : 218
    Points
    218
    Par défaut
    Bonjour, c'est probablement une erreur d'encodage.

    C'est une des principales amélioration sur Python3 par rapport à Python2, la gestion de l’Unicode.
    Or l'exception levée est : UnicodeDecodeError
    Et elle est lancée ici : "D:\Logiciel\WinPython-64bit-3.4.4.5Qt5\python-3.4.4.amd64\lib\encodings\cp1252.py"

    Dans l'ouverture de ton fichier tu utilise encoding='cp1252', essaye peut-être en UTF-8

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 26
    Points : 11
    Points
    11
    Par défaut
    j'ai ajouté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    # -*- coding: utf-8 -*-
    mais rien

  4. #4
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Juste une petite précision...

    Quand on indique en haut d'une page de code Python "# -*- coding: utf-8 -*-", on informe Python de l'encodage du fichier pour savoir lire les textes écrits en "dur" dans la page, mais il faut que ce soit vrai! C'est à dire que l'éditeur de texte utilisé a bien été configuré pour écrire et enregistrer le script avec cet encodage.

    Quand on ne sait pas, on peut tâtonner, mais on peut aussi utiliser un éditeur comme notepad++ sous Windows (ou équivalents sous autres OS) qui reconnait souvent l'encodage au chargement, et qui permet de le changer comme on veut.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par chenwaZi Voir le message
    j'ai ajouté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    # -*- coding: utf-8 -*-
    mais rien
    L'erreur n'est pas au lancement du script (que Python lit bien) mais dans le traitement du fichier XML.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 26
    Points : 11
    Points
    11
    Par défaut
    Merci pour l’information
    Mais je ne connais toujours pas comment faire

  7. #7
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2013
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2013
    Messages : 156
    Points : 218
    Points
    218
    Par défaut
    Quand je disais "à l'ouverture de ton fichier" je parlai de ton fichier XML.

    Il y a ça dans ton exception :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    name='awn.xml' mode='r' encoding='cp1252'

  8. #8
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 26
    Points : 11
    Points
    11
    Par défaut
    Mais le programme s’exécute parfaitement avec python 2 donc j'assume qu'il'a y quelque chose dans le programme et non pas dans le fichier XML

  9. #9
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2013
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2013
    Messages : 156
    Points : 218
    Points
    218
    Par défaut
    Ton fichier contient des caractères arabes. CP1252 ne sais pas les lires

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    >>> with open("C:\\Users\\toto\\Desktop\\awn.xml", 'r', encoding="UTF-8") as ff:
    	for line in ff:
    		print(line)
     
     
    <wordnet version="20">
     
    <item itemid="$A}ik_Aljilod_n1AR" offset="102231121" lexfile="" name="شائِك الجِلْد" type="synset" headword="" POS="n" source="" gloss="" authorshipid="1" />
     
    <authorship author="musa" date="20070608" score="" comment="" covering="1" authorshipid="1" />
     
    ...

  10. #10
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par chenwaZi Voir le message
    Mais le programme s’exécute parfaitement avec python 2 donc j'assume qu'il'a y quelque chose dans le programme et non pas dans le fichier XML
    Si vous assumiez, vous testeriez:
    open('awl.xml', encoding='cp1252').read() vs open('awl.xml', ncoding='utf-8').read()...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/02/2005, 12h56
  2. [VB.NET] Conseil migration d'ADO vers ADO.NET
    Par daner06 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 02/12/2004, 08h57
  3. [Forms]migration forms 6 vers forms 8
    Par anthonychery dans le forum Oracle
    Réponses: 7
    Dernier message: 17/11/2004, 17h54
  4. Demande de conseil pour migration de lignes vers colonnes
    Par ririd dans le forum Administration
    Réponses: 6
    Dernier message: 04/11/2004, 17h02
  5. [SYBASE] migration ASE12.0 vers ASE12.5
    Par sybase dans le forum Sybase
    Réponses: 1
    Dernier message: 25/10/2004, 15h53

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