Mengapa Kod Python Saya Membuang UnicodeDecodeError Semasa Membaca Fail?

Mary-Kate Olsen
Lepaskan: 2024-11-03 12:17:02
asal
371 orang telah melayarinya

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

Ralat Penyahkodan dalam Python: UnicodeDecodeError semasa Menukar Bait

Ralat biasa yang dihadapi dalam Python apabila bekerja dengan rentetan ialah UnicodeDecodeError apabila cuba menyahkod bait menggunakan codec UTF-8. Ralat ini berlaku apabila Python cuba mentafsir tatasusunan bait sebagai rentetan berkod UTF-8 dan menemui jujukan bait yang tidak mematuhi peraturan UTF-8.

Dalam kes khusus yang dirujuk dalam yang disediakan URL, ralat ditemui semasa menyusun skrip "process.py" daripada repositori GitHub pix2pix-tensorflow. Skrip cuba membaca dan memuatkan fail (khususnya imej) menggunakan open(). Apabila Python cuba menyahkod kandungan fail sebagai rentetan UTF-8, ia gagal kerana jujukan bait pada permulaan fail tidak dibenarkan dalam pengekodan UTF-8.

Punca ralat ini ialah ketidakpadanan antara sifat sebenar kandungan fail dan andaian Python bahawa ia dikodkan UTF-8. Fail asal mungkin fail perduaan, seperti imej atau data termampat, yang tidak boleh dinyahkodkan dengan pasti sebagai UTF-8.

Untuk menyelesaikan isu ini, seseorang harus membaca fail itu sebagai data binari secara eksplisit menggunakan ' mod rb' dalam fungsi open():

<code class="python">with open(path, 'rb') as f:
    contents = f.read()</code>
Salin selepas log masuk

Dengan menggunakan mod 'rb', Python akan menganggap fail sebagai binari dan tidak akan cuba menyahkodnya. Ini akan menghalang UnicodeDecodeError daripada berlaku.

Atas ialah kandungan terperinci Mengapa Kod Python Saya Membuang UnicodeDecodeError Semasa Membaca Fail?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan