Heim >Backend-Entwicklung >Python-Tutorial >Wie behebt man „TypeError: Es ist ein Byte-ähnliches Objekt erforderlich, nicht ‚str'' beim Umgang mit Dateien in Python 3?

Wie behebt man „TypeError: Es ist ein Byte-ähnliches Objekt erforderlich, nicht ‚str'' beim Umgang mit Dateien in Python 3?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-01 08:39:11480Durchsuche

How to Fix

Umgang mit Dateiinhalten in Python 3: Auflösen von „TypeError: ein bytesähnliches Objekt ist erforderlich, nicht ‚str‘“

In Python 2.7 war das Lesen von Zeilen aus einer Datei und das Durchführen von Operationen daran unkompliziert. Bei der Migration auf Python 3.5 können Benutzer jedoch auf ein Problem stoßen, bei dem die „if“-Anweisung, die einen String-Vergleich innerhalb einer for-Schleife enthält, einen „TypeError: a bytes-like object is needed, not ‚str‘“ auslöst. Diese Diskrepanz ergibt sich aus der unterschiedlichen Handhabung von Dateiinhalten in Python 3.

In Python 3 werden Dateien standardmäßig im Binärmodus geöffnet, was bedeutet, dass alle aus der Datei gelesenen Daten als Byte-Objekte statt als Strings zurückgegeben werden. Dies kann zu Fehlern führen, wenn Zeichenfolgenvergleiche innerhalb einer for-Schleife durchgeführt werden.

Um dieses Problem zu beheben, gibt es zwei Möglichkeiten:

  1. Dateiöffnungsmodus in Textmodus ändern: Durch Öffnen der Datei im Textmodus („r“ statt „rb“) werden die Daten beim Lesen automatisch in Zeichenfolgen konvertiert, wodurch das Problem behoben wird TypeError.
  2. Verwenden Sie Byte-ähnliche Objekte zum Vergleich: Wenn Sie die Datei im Binärmodus belassen möchten, können Sie zum Vergleich Byte-Objekte anstelle von Zeichenfolgen verwenden. Verwenden Sie beispielsweise anstelle von „if 'some-pattern' in tmp: continue“ „if b'some-pattern' in tmp: continue“.

Wenn Sie eine dieser Methoden befolgen, können Sie kann sicherstellen, dass Dateiinhalte in Python 3 korrekt verarbeitet werden, wodurch der TypeError verhindert wird und Sie Ihre Codierung ohne Unterbrechungen fortsetzen können.

Das obige ist der detaillierte Inhalt vonWie behebt man „TypeError: Es ist ein Byte-ähnliches Objekt erforderlich, nicht ‚str'' beim Umgang mit Dateien in Python 3?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn