bonjour j'ai ce message d'erreur alors je tente de comparer une chaîne et à une autre chaîne qui arrive depuis un arduino.
pi@raspberrypi:~ $ ./input-comm-to-domoticz.py
Traceback (most recent call last):
File "./input-comm-to-domoticz.py", line 12, in <module>
if "entree-12" in message :
TypeError: Type str doesn't support the buffer API
alors que je fais mes tests sur python cela fonctionne alors qu'en python3 cela ne fonctionne plus et il me faut des bibliothèques de python 3 pour la suite de mon code.
Le problème ne vient pas de la comparaison, mais du fait que tu utilises un type str là où un bytes est attendu (pour écrire dans un fichier en mode binaire ou sur une socket par exemple). Tu peux passer d'une str vers un objet bytesvia sa méthode encode.
while 1 :
message = ser.readline()
if "entree-12" in message :
print("condition ok")
print("entree 12 active")
else :
print(message)
ne fonctionne pas, il faut specifier que la condition attend un objet bytes
apres:
while 1 :
message = ser.readline()
if (b"entree-12") in message :
print("condition ok")
print("entree 12 active")
else :
print(message)
une paire de parenthèse et un petit b peuvent ainsi te mettre en déroute. avec un peu de chance ce poste d'autres non expert dans mon genre.
merci les gas.
comparaison de chaine entre python et python3
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique