【问题标题】:Python _csv Error: line contains NULL bytePython _csv 错误:行包含 NULL 字节
【发布时间】:2025-11-21 19:55:02
【问题描述】:

这是我的代码:

filepath = sys.argv[1]

csvdata = list(csv.reader(open(filepath)))

我该如何解决?

我将我的 excel 文件保存为 csv 并收到此错误:

_csv.Error: new-line character seen in unquoted field - do you need to open the file in universal-newline mode?

【问题讨论】:

  • 十亿种方式,首先包括堆栈跟踪和代码的更多信息!
  • 它可能不是有效的 CSV 文件。您最多只能过滤掉 nul 字节。
  • nul 字节是空单元格吗?我正在使用一个 excel 文件。
  • 如果您使用的是 Excel 文件,请先尝试将其导出/保存为 csv 文件。 Excel 工作表不是 csv 文件。
  • 好的,现在我收到了这个错误“_csv.Error: new-line character seen in unquoted field - 你需要以通用换行模式打开文件吗?”

标签: python excel csv


【解决方案1】:
  1. Excel 文件不是 csv 文件。首先将文件导出/保存为 csv。
  2. python 版本之间是否以二进制或文本形式打开文件存在差异。这与如何处理换行符有关。 在 Python 2.x 中,以二进制形式打开:open(filepath, 'rb')

    在 Python 3.x 中,不要:open('file.csv', 'r')

    我从this link about reading in csv files 学到的第二部分

  3. 对于某些操作系统(肯定是 Mac OS),您需要以“rU”模式打开,请参阅:this link with same problem specifically on Mac OS

【讨论】:

  • 我仍然收到这个错误:“_csv.Error: new-line character seen in unquoted field - 你需要以通用换行模式打开文件吗?”
  • 我认为您将不得不向我们提供更多信息。蟒蛇版本。操作系统。显示问题的示例文本(最好是重现问题的几行。您尝试了上述哪些建议?他们改变了结果吗?
  • 我在这里(Linux,Python 2.7)用我自己制作的 csv 文件尝试过这个,没有问题。要了解问题,我们需要更多信息
  • 使用 Mac OS,我已经尝试了目前给出的所有解决方案。
  • 是的,我认为您需要通用的新行模式。见:*.com/questions/6726953/…
【解决方案2】:

试试这个(输入 csv 文件的实际位置)...

with open('c:\pytest.csv', 'rb') as csvfile:

    data = csv.reader(csvfile)

    mylist = list (data)

    print mylist

【讨论】:

  • 但是我需要将这个脚本用于一堆 csv 文件,所以我想让它更通用
  • 这更多地说明了如何读取 CSV 文件。您可以采用任何有效 CSV 文件的标准输入并应用相同的逻辑。
  • 得到这个错误:“mylist = list(data) _csv.Error: new-line character seen in unquoted field - 你需要在通用换行模式下打开文件吗?”
  • 参考下面的代码 - 打开对话框选择要读取的文件
【解决方案3】:
from tkFileDialog import askopenfilename  
import csv

filename = askopenfilename()  
with open(filename, 'rb') as csvfile:  
    data = csv.reader(csvfile)  
    mylist = list (data)  
print mylist

【讨论】:

  • 没有任何解释的代码转储很少有帮助。 Stack Overflow 是关于学习的,而不是提供 sn-ps 来盲目复制和粘贴。请edit您的问题并解释它如何回答所提出的具体问题。见How to Answer