Python 中错误 CSV.Error: Line Contains Null Byte
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 编码中无效的字符或不可见的字符(例如,不可打印的字符)。
要修复此错误,您必须识别并从文件中删除无效字符。 这可以使用文本编辑器或十六进制编辑器来完成。
删除无效字符后,应该可以毫无问题地读取文件。
这是针对此类错误的另外三种解决方案。
- 在内存中转换字节流
- 通过用空字符串替换 NULL 字节
- 固定线路通过
转换内存中的对象字节流
我们可以通过转换内存中的目标文件字节流来解决这个错误。 下面的代码可以帮助将其转换为内存中的字节流。
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 的系统来执行此操作。
相关文章
Python 中错误 AttributeError: Module Urllib Has No Attribute Request
发布时间:2023/07/04 浏览次数:106 分类:Python
-
Python 将缓存导入,因为您正在使用导入的模块供其自身使用,使其成为对象的一部分。Python 中 AttributeError:module 'urllib' has no attribute 'request' 当您尝试通过导入 URL 库打开 URL 链接时,此错误是
Python 错误 ValueError: Cannot Convert Float NaN to Integer
发布时间:2023/05/31 浏览次数:116 分类:Python
-
本篇文章将介绍如何修复 ValueError: cannot convert float NaN to integer 。使用 fillna() 方法修复python错误 ValueError: cannot convert float NaN to integer
修复 Python 错误TypeError: Missing 1 Required Positional Argument
发布时间:2023/05/31 浏览次数:152 分类:Python
-
本篇文章将讨论 Python 中的 TypeError: missing 1 required positional argument: 'self' 错误以及我们如何解决它。让我们讨论引发此错误的情况。不在 Python 中实例化对象
Python 错误 OverflowError: Python Int Too Large to Convert to C Long
发布时间:2023/05/31 浏览次数:198 分类:Python
-
本篇文章将介绍 Python 中的 OverflowError: python int too large to convert to c long 错误。当算术结果超出数据类型的给定限制时,Python 中会引发 OverflowError。
Python 错误 UnicodeDecodeError: ASCII Codec Can't Decode Byte in Position: Ordi
发布时间:2023/05/31 浏览次数:105 分类:Python
-
在本文中,我们将学习如何解决在代码执行期间发生的 UnicodeDecodeError。 我们将查看导致此错误的不同原因。
Python 错误 NameError: Name Execfile Is Not Defined
发布时间:2023/05/31 浏览次数:88 分类:Python
-
本篇文章介绍了 NameError: name execfile is not defined、其原因以及在 Python 3 中解决此错误的方法。
Python 错误 IndentationError: Unindent Does Not Match Any Outer Indentation Lev
发布时间:2023/05/31 浏览次数:52 分类:Python
-
我们还将找到在 Python 中解决此错误的方法。 让我们从 Python 中的 IndentationError 开始。Python 中的缩进规则
Python 错误 ImportError: No Module Named Requests
发布时间:2023/05/31 浏览次数:136 分类:Python
-
错误 ImportError: No module named requests 意味着 Python 解释器无法导入 requests 模块。本篇文章展示了修复Python中 ImportError: No module named requests 错误的方法。
修复 Python 错误 SyntaxError: Invalid Token
发布时间:2023/05/30 浏览次数:103 分类:Python
-
在本文中,我们将了解什么是 SyntaxError: invalid token Python 错误以及如何修复它。 令牌是语句的重要组成部分,组合这些令牌可为 Python 编译器提供有意义的模式。