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 :

conversion byte en str


Sujet :

Python

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 11
    Points : 6
    Points
    6
    Par défaut conversion byte en str
    bonjour,
    je souhaite récupérer des données envoyées par un arduino sur le pc,et stocker ces données dans un fichier texte,via la liaison série.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #programme lecture ecriture sur port serie avec arduino
    import serial
    ser=serial.Serial("COM5",timeout=1)
    print(ser)
    while 1:
        donnee='0'
        code=input("tapez 1 pour recevoir la donnee: ")
        ser.write(code.encode('utf-8')) #envoi le code ascii de 1
        donnee=str(ser.readline())
        print(donnee)
    ceci me renvoie la donnée sous la forme b'xxxx'.
    L'utilisation de la méthode decode:donnee.decode('utf-8') me renvoie une erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Traceback (most recent call last):
      File "C:\Users\jeanluc\Dropbox\python\essaiserie.py", line 10, in <module>
        print(donnee.decode('UTF-8'))
    AttributeError: 'str' object has no attribute 'decode'
    >>>
    quelqu'un a t'il une lueur sur le sujet de l'encodage/decodage?

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par badei Voir le message
    quelqu'un a t'il une lueur sur le sujet de l'encodage/decodage?
    Lancez la console Python et essayez de reproduire le problème dont vous vous plaignez:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> donnee = b'123'
    >>> donnee.decode('utf-8')
    '123'
    Donc si donnee est "bytes", donnee décode fonctionne.

    De plus, l'erreur dit qu'à la ligne 10 vous avez l'instruction "print(donnee.decode('UTF-8'))" alors que le code que vous postez montre une ligne 10 contenant "print(donnee)"... qui n'a aucune raison de planter - mais qui ne fait peut être pas ce que vous vouliez mais vous n'en parlez pas.

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

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Bonjour, j'ai trouvé une solution simple, qui est de passer en paramètre à la fonction str() l encodage :
    Donnee=str(ser.readline(),'utf-8')
    Et ça fonctionne. Par contre, ce que vous indiquez fonctionne en ligne de commande, mais pas dans le programme. Merci quand même.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par badei Voir le message
    Par contre, ce que vous indiquez fonctionne en ligne de commande, mais pas dans le programme.
    Par construction, les instructions passées sous l'interpréteur Python interactif fonctionnent à l'identique dans un script/programme. La (seule) difficulté est de les recopier au bon endroit dans la séquence d'instructions.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> donnee = b'123'
    >>> donnee.decode('utf-8')
    '123'
    >>> str(donnee, 'utf-8')
    '123'
    Par contre, .decode appliqué à un "str" ne fonctionnera pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> donnee = str(donnee, 'utf-8')
    >>> donnee.decode('utf-8')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: 'str' object has no attribute 'decode'
    >>>
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    oui,c'était bien ça mon problème.Mais avec l'argument passé tout fonctionne.

Discussions similaires

  1. Réponses: 20
    Dernier message: 11/07/2006, 17h43
  2. [conversion] byte en Hex
    Par if_zen dans le forum Langage
    Réponses: 4
    Dernier message: 08/06/2006, 14h00
  3. Conversion byte [] -> String
    Par MiJack dans le forum Langage
    Réponses: 3
    Dernier message: 20/10/2005, 18h16
  4. Conversion Byte en octets, Mo, Go
    Par elitost dans le forum Général Java
    Réponses: 7
    Dernier message: 27/09/2005, 13h48
  5. [C++.NET] Conversion Byte*/Byte[]
    Par SteelBox dans le forum VC++ .NET
    Réponses: 2
    Dernier message: 13/02/2005, 19h12

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