Sample.csv contiene lo siguiente:
NAME Id No Dept
Tom 1 12 CS
Hendry 2 35 EC
Bahamas 3 21 IT
Frank 4 61 EE
Y el archivo Python contiene el siguiente código:
import csv
ifile = open('sample.csv', "rb")
read = csv.reader(ifile)
for row in read :
print (row)
Cuando ejecuto el código anterior en Python, obtengo la siguiente excepción:
Archivo "csvformat.py", línea 4, para fila en lectura: _csv.Error: el iterador debe devolver cadenas, no bytes (¿abrió el archivo en modo texto?)
¿Cómo puedo arreglarlo?
python
python-3.x
csv
Pika el mago de las ballenas
fuente
fuente
Acabo de solucionar este problema con mi código. La razón por la que está lanzando esa excepción es porque tienes el argumento
rb
. Cambia eso ar
.Tu codigo:
Nuevo código:
fuente
Su problema es que tiene el
b
en laopen
bandera. El indicadorrt
(lectura, texto) es el predeterminado, así que, usando el administrador de contexto, simplemente haga esto:El administrador de contexto significa que no necesita un manejo genérico de errores (sin el cual puede quedar atrapado con el archivo abierto, especialmente en un intérprete), porque cerrará automáticamente el archivo en caso de error o al salir del contexto.
Lo anterior es lo mismo que:
o
fuente
with
declaración, también conocida como el administrador de contexto, no tiene nada que ver con esta pregunta, en absoluto!En Python3, se
csv.reader
espera que el paso iterativo devuelva cadenas, no bytes. Aquí hay una solución más para este problema, que utiliza elcodecs
módulo:fuente
Tuve este error al ejecutar un antiguo script de Python desarrollado con Python 2.6.4
Al actualizar a 3.6.2, tuve que eliminar todos los parámetros 'rb' de las llamadas abiertas para corregir este error de lectura de csv.
fuente