【问题标题】:Python CSV error: line contains NULL byte, but no NULL byte found in the filePython CSV 错误:行包含 NULL 字节,但在文件中找不到 NULL 字节
【发布时间】:2020-09-21 08:28:45
【问题描述】:

我正在尝试读取一些 txt 文件、制表符分隔的数据并使用下面的代码,它显示以下错误:

对于阅读器中的行:

错误:行包含 NULL 字节

代码基本上是试图从特定列中获取一些信息。以下是它的精简版:

with open('07table.txt', encoding = "utf-8", errors='ignore') as fo:
    reader = csv.reader(fo, delimiter='\t', quoting=csv.QUOTE_MINIMAL)

过去一周,我试图调查文件是否包含 NULL 字节。我使用下面的代码来检查这是否属实,令我惊讶的是,我没有在文件中找到任何 NULL 字节:

if '\x00' in open('07table.txt').read():
    print("you have null bytes in your input file")
else:
    print("you don't")

为了安全起见,我还运行了一个代码来替换我的 txt 文件中的 NULL 字节,但我仍然有同样的错误。

到目前为止,我尝试过的另一件事是更改为旧版本的 Spyder 并将 Python 版本降级到 3.5.14,因为我认为这可能是我安装的环境的问题。从某种意义上说,这产生了一些影响,因为我的代码成功地读取了两个以前应该包含 NULL 字节的文件。但是,当它通过这两个文件时,代码会呈现与上面发布的相同的错误。

此时,我非常确定文件不包含 NULL 字节。关于我为什么会收到此错误的任何想法?

【问题讨论】:

  • 你试过这个链接吗? stackoverflow.com/questions/7894856/…。其中提到尝试使用 utf-16 编码打开文件。
  • 感谢您的回复!我忘了提,但我实际上尝试了这个建议。对于我尝试使用 UTF-8、UTF-16 或 latin-1 解码的每个文件。大多数文件都以 UTF-8 编码。

标签: python file null filesystems csvreader


【解决方案1】:

我发现了问题所在。我正在从以 NFTS 格式化的外部硬盘驱动器读取文件,而代码在以 HFS 格式化的 macOS 上运行。

格式化外部驱动器以匹配我笔记本电脑上的格式后,空字节问题消失了。

【讨论】:

    猜你喜欢
    • 2021-12-17
    • 2014-11-20
    • 1970-01-01
    • 1970-01-01
    • 2020-09-18
    相关资源
    最近更新 更多