Heim > Artikel > Backend-Entwicklung > Warum löst mein Python-Code beim Lesen von Dateien einen UnicodeDecodeError aus?
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>
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!