Estoy tratando de leer cada línea de un archivo csv y obtener una «línea contiene NULL byte de error».

reader = csv.reader(open(mycsv, 'rU'))
for line in reader:
     print(line)


Traceback (most recent call last):
  File "<stdin>", line 1, in <module
_csv.Error: line contains NULL byte

Utilizando la siguiente me encontré con que me han bytes nulos.

if '
if '\0' in open(mycsv).read():
print("have null byte")
'
in open(mycsv).read(): print("have null byte")

¿Cuál es la mejor manera de evitar esto? Hacer un replace ‘\0’ en todas las líneas? Necesito proceso de este tipo de archivo de diario y tiene cerca de 400.000 líneas (1 gb) de datos. Supongo reemplazar sustancialmente más lento este aún más abajo.

OriginalEl autor Eric | 2014-09-26

1 Comentario

  1. 10

    Probar esto!

    import csv 
    
    def mycsv_reader(csv_reader): 
      while True: 
        try: 
          yield next(csv_reader) 
        except csv.Error: 
          # error handling what you want.
          pass
        continue 
      return
    
    if __name__ == '__main__': 
        reader = mycsv_reader(csv.reader(open(mycsv, 'rU')))
        for line in reader:
            print(line)
    Que funciona y me pone a través de el archivo, me pregunto ¿por qué estoy recibiendo estos bytes nulos. Se que puede ser usado en lugar de comas como separadores? f.count(‘\x00’) devuelve 1926 de estos.
    Por favor, consulte el stackoverflow.com/questions/7894856/…

    OriginalEl autor han058

Dejar respuesta

Please enter your comment!
Please enter your name here