Warum löst mein Python-Code beim Lesen von Dateien einen UnicodeDecodeError aus?

Mary-Kate Olsen
Freigeben: 2024-11-03 12:17:02
Original
361 Leute haben es durchsucht

Why Does My Python Code Throw a UnicodeDecodeError When Reading Files?

Dekodierungsfehler in Python: UnicodeDecodeError beim Konvertieren von Bytes

Ein häufiger Fehler, der in Python beim Arbeiten mit Zeichenfolgen auftritt, ist der UnicodeDecodeError beim Versuch zu dekodieren Bytes mit dem UTF-8-Codec. Dieser Fehler tritt auf, wenn Python versucht, ein Byte-Array als UTF-8-codierte Zeichenfolge zu interpretieren und auf eine Folge von Bytes stößt, die nicht den UTF-8-Regeln entsprechen.

In dem speziellen Fall, auf den im bereitgestellten Dokument verwiesen wird URL, der Fehler ist beim Kompilieren des Skripts „process.py“ aus dem GitHub-Repository pix2pix-tensorflow aufgetreten. Das Skript hat versucht, eine Datei (insbesondere ein Bild) mithilfe von open() zu lesen und zu laden. Als Python versuchte, den Inhalt der Datei als UTF-8-Zeichenfolge zu dekodieren, schlug dies fehl, da die Bytesequenz am Anfang der Datei in der UTF-8-Kodierung nicht zulässig war.

Die Hauptursache dieses Fehlers ist die Diskrepanz zwischen der tatsächlichen Art des Dateiinhalts und der Annahme von Python, dass er UTF-8-codiert ist. Bei der Originaldatei handelt es sich möglicherweise um eine Binärdatei, beispielsweise ein Bild oder komprimierte Daten, die nicht zuverlässig als UTF-8 dekodiert werden kann.

Um dieses Problem zu beheben, sollte man die Datei explizit als Binärdaten lesen, indem man das „ rb‘-Modus in der open()-Funktion:

<code class="python">with open(path, 'rb') as f:
    contents = f.read()</code>
Nach dem Login kopieren

Durch die Verwendung des ‚rb‘-Modus behandelt Python die Datei als binär und versucht nicht, sie zu dekodieren. Dadurch wird verhindert, dass der UnicodeDecodeError auftritt.

Das obige ist der detaillierte Inhalt vonWarum löst mein Python-Code beim Lesen von Dateien einen UnicodeDecodeError aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage