Corriger l'erreur Bytes-Like Object Is Required Not STR en Python
Ce tutoriel discutera de l’erreur a bytes-like object is required, not 'str'
en Python, et des moyens de le corriger. Cette TypeError
indique quand une opération invalide est effectuée sur le mauvais type de données.
Nous discuterons des objets chaîne et octets en Python. Les chaînes sont une collection de caractères, alors que ces dernières sont une suite d’octets, aussi appelés objets Unicode
. En Python3, toutes les chaînes sont des objets Unicode
par défaut. En Python 2, nous pouvons convertir des chaînes en Unicode
et vice-versa en utilisant les fonctions encode
et decode
.
Nous obtenons cette erreur lorsque nous travaillons avec un objet bytes mais que nous le traitons comme une chaîne. C’est courant en raison du changement de ces objets dans Python 2 et Python 3. Nous obtenons cette erreur lorsque nous travaillons avec un fichier binaire et le traitons comme une chaîne.
Par example:
with open("myfile.txt", "rb") as f:
a = f.read()
print(type(a))
a.split(";")
Production :
TypeError: a bytes-like object is required, not 'str'
Dans l’exemple ci-dessus, nous lisons un fichier en mode rb
. Ce mode signifie la lecture d’un fichier binaire. Le contenu de celui-ci est en octets et stocké dans la variable a
, et nous affichons le type.
Lorsque nous appliquons la fonction split()
à cette variable, nous obtenons l’erreur a bytes-like object is required, not 'str'
. C’est parce que la fonction split()
fonctionne avec des objets de type chaîne.
Pour éviter cette erreur, faites attention au type de lecture de données et à ses opérations. Nous pouvons également corriger cette erreur en convertissant l’objet de type octet en chaîne à l’aide de la fonction str()
.
Par example:
with open("myfile.txt", "rb") as f:
a = str(f.read())
print(type(a))
s = a.split(";")
Production :
<class 'str'>
Le str()
convertit l’objet en une chaîne pour utiliser la fonction split()
.
Cette erreur est également fréquente lorsque vous travaillez avec des sockets et que vous envoyez ou recevez des données. Nous pouvons utiliser le caractère b
avant une chaîne pour envoyer des octets ou la fonction encode()
avec le paramètre utf-8
.
Par example:
data = b"result"
s.sendall(data)
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedInArticle connexe - Python String
- Supprimer les virgules de la chaîne en Python
- Comment vérifier qu'une chaîne est vide de manière pythonique
- Convertir une chaîne en nom de variable en Python
- Comment supprimer les espaces dans une chaîne de caractères en Python
- Comment extraire des nombres d'une chaîne de caractèresen Python
- Comment convertir une chaîne de caractères en datetime en Python
Article connexe - Python Error
- Correction de TabError en Python
- Correction de l'erreur Python Return Outside Function
- Correction de l'erreur String Must Be Indices en Python
- Correction de l'erreur syntaxerror: unexpected character after line continuation character en Python
- Correction de l'erreur TypeError: iteration over a 0-d array dans Python NumPy
- Correction de l'erreur TypeError: must be str, not int en Python