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
ben laopenbandera. 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
withdeclaración, también conocida como el administrador de contexto, no tiene nada que ver con esta pregunta, en absoluto!En Python3, se
csv.readerespera que el paso iterativo devuelva cadenas, no bytes. Aquí hay una solución más para este problema, que utiliza elcodecsmó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