CSV.Error: la línea contiene un byte nulo en Python

Zeeshan Afridi 10 octubre 2023
  1. el formato de archivo CSV
  2. Crear un archivo CSV en Python
  3. el error _csv.Error: la línea contiene un byte NULL en Python
  4. Solucione el error _csv.Error: la línea contiene un byte NULL en Python
  5. Conclusión
CSV.Error: la línea contiene un byte nulo en Python

Un archivo CSV es un archivo de texto que contiene valores separados por comas. Cada línea del archivo representa una fila de datos y una coma separa cada valor.

Los archivos CSV se utilizan a menudo para almacenar datos de hojas de cálculo o bases de datos. Pueden abrirse en editores de texto o programas de hojas de cálculo y analizarse y procesarse fácilmente con lenguajes de programación.

el formato de archivo CSV

Un archivo CSV es un archivo de texto que almacena datos en un formato tabular. Cada fila de la tabla se denomina registro y cada campo del registro se denomina columna.

Los archivos CSV normalmente usan una coma para separar cada campo, pero también se pueden usar otros caracteres, como tabulaciones o espacios.

Los archivos CSV a menudo se usan para almacenar datos de bases de datos u hojas de cálculo. Se pueden abrir en un editor de texto, como Microsoft Notepad, o en un programa de hoja de cálculo, como Microsoft Excel.

Crear un archivo CSV en Python

CSV significa valores separados por comas, donde los datos del archivo se separan con comas y se almacenan en un formato tabular como texto sin formato. Cada fila del archivo representa un registro y la columna representa los diferentes atributos de los datos en los archivos CSV.

import csv

meta_data = ["First Name", "Last Name", "Course", "Age"]
student_data = ["Zeeshan", "Afridi", "Computer programming", "24"]

with open("countries.csv", "w", encoding="UTF8") as f:
    writer = csv.writer(f)

    # write the header
    writer.writerow(meta_data)

    # write the data
    writer.writerow(student_data)

# closing the file
f.close()

a = open("countries.csv", "r")
print(a.read())

# closing the file
a.close()

Producción :

First Name,Last Name,Course,Age
Zeeshan,Afridi,Computer programming,24

el error _csv.Error: la línea contiene un byte NULL en Python

Suponga que obtiene _csv.Error: la línea contiene un byte NULL cuando intenta leer un archivo CSV, es probable que haya uno o más bytes NULL en el archivo. Para solucionar esto, puede utilizar la opción --zero-terminated al ejecutar el lector CSV, que tratará todos los bytes NULL como caracteres de fin de línea.

Cuando tenga valores nulos, encontrará el siguiente error:

file my.csv, line 1: line contains NULL byte

Solucione el error _csv.Error: la línea contiene un byte NULL en Python

Te encuentras con _csv.Error: la línea contiene un byte NULL normalmente porque estás intentando leer un archivo CSV guardado con la codificación incorrecta. Debe especificar la codificación correcta al leer el archivo para solucionar este problema.

Por ejemplo, si el archivo está codificado en UTF-8, usaría el siguiente código:

import csv

with open("filename.csv", "r", encoding="utf-8") as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)

Supongamos que encuentra el _csv.Error: la línea contiene un byte NULL cuando intenta leer un archivo CSV, es probable que haya un carácter no válido en el archivo. Esto puede deberse a varias cosas, incluidos caracteres que no son válidos en la codificación UTF-8 o caracteres que no son visibles (por ejemplo, caracteres no imprimibles).

Para corregir este error, debe identificar y eliminar el carácter no válido del archivo. Esto se puede hacer usando un editor de texto o un editor hexadecimal.

Una vez que se elimine el carácter no válido, el archivo debería poder leerse sin problemas.

Estas son las tres soluciones más para este tipo de error.

  1. Convertir en el flujo de bytes de memoria
  2. Al reemplazar un byte NULL con una cadena vacía
  3. Pasando en líneas fijas

Convertir flujo de bytes en memoria de objetos

Podemos resolver este error convirtiendo el flujo de bytes en memoria del archivo de objeto. Así que a continuación hay un código que ayudará a convertirlo en un flujo de bytes en memoria.

content = csv_file.read()
# after conversion into an in-memory byte stream
csv_stream = io.BytesIO(content)

Reemplazar bytes NULL con cadenas vacías

El error byte NULO se puede resolver iterando a través de líneas y reemplazando bytes nulos con cadenas vacías. El código para tal fin será el siguiente:

# After Iteration through the lines and replacing null bytes with empty string
fixed_lines = (line.replace(b"\x00", b"") for line in csv_stream)

Pase el archivo de objeto en fixed_lines en lugar de csv_stream

Resolver este error requiere pasar líneas fijas en lugar de una transmisión CSV. El código para tal fin será el siguiente:

# Below remains unchanged, just passing in fixed_lines instead of csv_stream
stream = codecs.iterdecode(fixed_lines, "utf-8-sig", errors="strict")
dict_reader = csv.DictReader(stream, skipinitialspace=True, restkey="INVALID")

Conclusión

El error de CSV la línea contiene un byte NULO es causado por una línea en su archivo CSV que contiene un byte nulo. Esto puede suceder si está utilizando un editor de texto que no es compatible con Unicode o si está transfiriendo el archivo desde otro sistema que no es compatible con Unicode.

Para corregir este error, debe encontrar la línea en su archivo CSV que contiene el byte nulo y eliminarlo. Puede hacerlo utilizando un editor de texto compatible con Unicode o transfiriendo el archivo a un sistema compatible con Unicode.

Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn

Artículo relacionado - Python Error