迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

Python 中错误 CSV.Error: Line Contains Null Byte

作者:迹忆客 最近更新:2023/07/04 浏览次数:

CSV 文件是包含逗号分隔值的文本文件。 文件中的每一行代表一行数据,每个值之间用逗号分隔。

CSV 文件通常用于存储电子表格或数据库中的数据。 它们可以在文本编辑器或电子表格程序中打开,并可以使用编程语言轻松解析和处理。


CSV 文件格式

CSV 文件是一种以表格格式存储数据的文本文件。 表的每一行称为一条记录,记录中的每个字段称为一列。

CSV 文件通常使用逗号分隔每个字段,但也可以使用其他字符,例如制表符或空格。

CSV 文件通常用于存储数据库或电子表格中的数据。 它们可以在文本编辑器(例如 Microsoft 记事本)或电子表格程序(例如 Microsoft Excel)中打开。


在 Python 中创建 CSV 文件

CSV 代表逗号分隔值,其中文件中的数据以逗号分隔,并以纯文本形式以表格格式存储。 文件中的每一行代表一条记录,列代表 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()

输出:

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

Python 中的 _csv.Error: line contains NULL byte 错误

假设您在尝试读取 CSV 文件时收到 _csv.Error: line contains NULL byte,很可能是因为文件中存在一个或多个 NULL 字节。 要解决此问题,您可以在运行 CSV 读取器时使用 --zero-termerated 选项,该选项会将所有 NULL 字节视为行尾字符。

当您有任何空值时,您将遇到以下错误:

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

修复 Python 中的 _csv.Error: line contains NULL byte 错误

您遇到 _csv.Error: line contains NULL byte 通常是因为您尝试读取以错误编码保存的 CSV 文件。 读取文件时必须指定正确的编码才能解决此问题。

例如,如果文件以 UTF-8 编码,您将使用以下代码:

import csv

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

假设您在尝试读取 CSV 文件时遇到 _csv.Error: line contains NULL byte,则文件中可能存在无效字符。 这可能是由多种原因引起的,包括 UTF-8 编码中无效的字符或不可见的字符(例如,不可打印的字符)。

要修复此错误,您必须识别并从文件中删除无效字符。 这可以使用文本编辑器或十六进制编辑器来完成。

删除无效字符后,应该可以毫无问题地读取文件。

这是针对此类错误的另外三种解决方案。

  1. 在内存中转换字节流
  2. 通过用空字符串替换 NULL 字节
  3. 固定线路通过

转换内存中的对象字节流

我们可以通过转换内存中的目标文件字节流来解决这个错误。 下面的代码可以帮助将其转换为内存中的字节流。

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

用空字符串替换 NULL 字节

可以通过迭代行并用空字符串替换空字节来解决空字节错误。 用于此目的的代码如下:

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

在fixed_lines而不是csv_stream中传递对象文件

解决此错误需要传入固定行而不是 CSV 流。 用于此目的的代码如下:

# 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")

总结

CSV 错误行包含空字节是由 CSV 文件中的一行包含空字节引起的。 如果您使用的文本编辑器不支持 Unicode,或者您从另一个不支持 Unicode 的系统传输文件,则可能会发生这种情况。

要修复此错误,您需要在 CSV 文件中找到包含空字节的行并将其删除。 您可以使用支持 Unicode 的文本编辑器或将文件传输到支持 Unicode 的系统来执行此操作。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Python 中错误 Address Already in Use

发布时间:2023/07/09 浏览次数:173 分类:Python

我们将通过示例介绍Python中何时出现 Address already in use 错误以及如何解决。Python 中的错误Address already in use 本文将讲述运行使用端口的程序时发生的Python堆栈错误。

Python 中错误 ValueError: Math Domain Error

发布时间:2023/07/09 浏览次数:607 分类:Python

在本篇文章中,我们的目标是探索解决 Python 中的 ValueError: math domain error 错误的不同方法。当编码方面数学(基础或高级)的使用存在固有缺陷时,Python 中通常会引发 ValueError: math domain error 错

Python 错误 Name xrange Is Not Defined

发布时间:2023/07/09 浏览次数:153 分类:Python

本篇文章将介绍如何解决 Python 中 name 'xrange' is not defined 的错误。解决Python中name 'xrange' is not defined错误 让我们尝试理解为什么会发生这个特定的错误。 让我们首先尝试复制这个问题。

Python 中错误 AttributeError: __Enter__

发布时间:2023/07/09 浏览次数:2241 分类:Python

在 Python 中,AttributeError 是在未定义 __enter__ 函数的情况下通过 with 语句使用类的对象时导致的错误。

Python 错误 Error: Invalid Command Bdist_wheel

发布时间:2023/07/09 浏览次数:847 分类:Python

在 Python 中构建 wheel 时,有时 setup.py 可能会退出并出现错误 invalid command 'bdist_wheel'。 本篇文章将讨论在 Python 中解决此问题的可能解决方案。安装wheel包来修复Python中 Error:invalid command 'bdist_

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便