CSV.Error: la línea contiene un byte nulo en Python
- el formato de archivo CSV
- Crear un archivo CSV en Python
-
el error
_csv.Error: la línea contiene un byte NULL
en Python -
Solucione el error
_csv.Error: la línea contiene un byte NULL
en Python - Conclusión
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.
- Convertir en el flujo de bytes de memoria
- Al reemplazar un byte NULL con una cadena vacía
- 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 is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.
LinkedInArtículo relacionado - Python Error
- Administrar fallas de segmentación en Python
- Archivo <Stdin>, Línea 1, en <Módulo> Error en Python
- Arreglar AttributeError: el objeto 'generador' no tiene atributo 'siguiente' en Python
- Arreglar el comando cl.exe falló: no existe tal archivo o directorio en Windows
- Arreglar NameError: la variable no está definida en Python
- Arreglar Socket.Gaierror: [Errno 8] Nodename ni Servname proporcionado, o desconocido en Python