Fix Bytes-Like Object Is Required Not STR Error in Python
In diesem Tutorial wird der Fehler a bytes-like object is required, not 'str'
in Python und Möglichkeiten zur Behebung erläutert. Dieser TypeError
zeigt an, wenn eine ungültige Operation mit dem falschen Datentyp ausgeführt wird.
Wir werden String- und Bytes-Objekte in Python besprechen. Strings sind eine Ansammlung von Zeichen, letztere eine Folge von Bytes, auch Unicode
-Objekte genannt. In Python3 sind alle Strings standardmäßig Unicode
-Objekte. In Python 2 können wir mit den Funktionen encode
und decode
Strings in Unicode
und umgekehrt umwandeln.
Wir erhalten diesen Fehler, wenn wir mit einem Bytes-Objekt arbeiten, es aber als Zeichenfolge behandeln. Dies ist häufig auf die Änderung dieser Objekte in Python 2 und Python 3 zurückzuführen. Wir erhalten diesen Fehler beim Arbeiten mit einer Binärdatei und behandeln ihn als Zeichenfolge.
Beispielsweise:
with open("myfile.txt", "rb") as f:
a = f.read()
print(type(a))
a.split(";")
Ausgabe:
TypeError: a bytes-like object is required, not 'str'
Im obigen Beispiel lesen wir eine Datei im rb
-Modus. Dieser Modus bedeutet das Lesen einer Binärdatei. Der Inhalt davon sind Bytes und in der Variablen a
gespeichert, und wir zeigen den Typ an.
Wenn wir die Funktion split()
auf diese Variable anwenden, erhalten wir den Fehler ein Byte-ähnliches Objekt ist erforderlich, nicht 'str'
. Das liegt daran, dass die Funktion split()
mit String-Objekten arbeitet.
Um diesen Fehler zu vermeiden, achten Sie auf den Datenlesetyp und seine Operationen. Wir können diesen Fehler auch beheben, indem wir das Byte-ähnliche Objekt mit der Funktion str()
in einen String konvertieren.
Beispielsweise:
with open("myfile.txt", "rb") as f:
a = str(f.read())
print(type(a))
s = a.split(";")
Ausgabe:
<class 'str'>
Das str()
wandelt das Objekt in einen String um, um die Funktion split()
zu verwenden.
Dieser Fehler tritt auch häufig auf, wenn mit Sockets gearbeitet und Daten gesendet oder empfangen werden. Wir können das Zeichen b
vor einem String verwenden, um Bytes zu senden, oder die Funktion encode()
mit dem Parameter utf-8
.
Beispielsweise:
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.
LinkedInVerwandter Artikel - Python String
- Entfernen Kommas aus String in Python
- Wie man prüft, ob eine Zeichenkette auf pythonische Weise leer ist
- Konvertieren einer Zeichenkette in einen Variablennamen in Python
- Wie man Leerzeichen in einem String in Python entfernt
- Wie man in Python Zahlen aus einer Zeichenkette extrahiert
- Wie man in Python String in datetime konvertiert
Verwandter Artikel - Python Error
- Adresse wird bereits verwendet Fehler in Python
- AttributeError: __Exit__ in Python
- AttributeError: 'Dict'-Objekt hat kein Attribut 'Append' in Python
- AttributeError: 'NoneType'-Objekt hat kein Attribut 'Text' in Python
- AttributeError: Int-Objekt hat kein Attribut
- AttributeError: Modul Urllib hat keine Attributanforderung