Python 3 hat eine wesentliche Änderung in der Art und Weise eingeführt, wie es damit umgeht Dateiinhalt. Dies kann bei der Migration von Code aus früheren Python-Versionen zu Fehlern führen, wie zum Beispiel dem häufigen „TypeError: a bytes-like object is needed, not 'str‘“.
Der Fehler tritt auf, wenn versucht wird, eine Zeichenfolge auszuführen. wie Operationen an einem Byte-Objekt, die normalerweise aus dem Öffnen einer Datei im Binärmodus (z. B. „rb“) resultieren. Sehen wir uns ein häufiges Szenario an, in dem dieser Fehler auftreten könnte:
with open(fname, 'rb') as f: lines = [x.strip() for x in f.readlines()] for line in lines: tmp = line.strip().lower() if 'some-pattern' in tmp: continue # ... code
In diesem Beispiel wird die Datei fname im Binärmodus geöffnet, was bedeutet, dass alle daraus gelesenen Daten als Byte-Objekte zurückgegeben werden. Die nachfolgende Zeilenvariable wird jedoch vom in-Operator als Zeichenfolge behandelt.
Um den Fehler zu beheben, kann man entweder das Bytes-Objekt dekodieren oder die Datei im Textmodus statt im Binärmodus öffnen.
Um das Bytes-Objekt tmp in einen String zu dekodieren, kann man decode() verwenden Methode:
if b'some-pattern' in tmp.decode(): continue
Alternativ kann die Datei im Textmodus geöffnet werden ('r' statt 'rb'), wodurch die Daten automatisch als dekodiert werden es lautet:
with open(fname, 'r') as f: lines = [x.strip() for x in f.readlines()] for line in lines: tmp = line.strip().lower() if 'some-pattern' in tmp: continue # ... code
Durch Befolgen dieser Richtlinien können Sie sicherstellen, dass Ihr Python 3-Code Dateiinhalte korrekt verarbeitet und den „TypeError: a“ vermeiden „Bytes-ähnliches Objekt ist erforderlich“ Fehler.
Das obige ist der detaillierte Inhalt vonWie kann Pythons Fehler „TypeError: Ein Byte-ähnliches Objekt ist erforderlich' beim Umgang mit Dateiinhalten behoben werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!