Sample.csv berisi yang berikut:
NAME Id No Dept
Tom 1 12 CS
Hendry 2 35 EC
Bahamas 3 21 IT
Frank 4 61 EE
Dan file Python berisi kode berikut:
import csv
ifile = open('sample.csv', "rb")
read = csv.reader(ifile)
for row in read :
print (row)
Ketika saya menjalankan kode di atas dengan Python, saya mendapatkan pengecualian berikut:
File "csvformat.py", baris 4, dalam untuk baris di baca: _csv.Error: iterator harus mengembalikan string, bukan byte (apakah Anda membuka file dalam mode teks?)
Bagaimana saya bisa memperbaikinya?
python
python-3.x
csv
Pika sang Penyihir Paus
sumber
sumber
Saya baru saja memperbaiki masalah ini dengan kode saya. Alasannya melemparkan pengecualian itu adalah karena Anda memiliki argumen
rb
. Ubah itu menjadir
.Kode Anda:
Kode baru:
sumber
Masalah Anda adalah Anda memiliki
b
diopen
bendera. Benderart
(baca, teks) adalah default, jadi, menggunakan manajer konteks, cukup lakukan ini:Manajer konteks berarti Anda tidak memerlukan penanganan kesalahan umum (yang tanpanya Anda mungkin akan terjebak dengan file yang terbuka, terutama dalam juru bahasa), karena itu akan secara otomatis menutup file pada kesalahan, atau keluar dari konteks.
Di atas sama dengan:
atau
sumber
with
pernyataan alias manajer konteks tidak ada hubungannya dengan pertanyaan ini, sama sekali!Dalam Python3,
csv.reader
mengharapkan, yang lulus mengembalikan string, bukan byte. Berikut adalah satu lagi solusi untuk masalah ini, yang menggunakancodecs
modul:sumber
Saya mengalami kesalahan ini saat menjalankan skrip python lama yang dikembangkan dengan Python 2.6.4
Ketika memperbarui ke 3.6.2, saya harus menghapus semua parameter 'rb' dari panggilan terbuka untuk memperbaiki kesalahan membaca csv ini.
sumber