获取错误:行包含Null,不确定原因

2024-09-30 18:35:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到一个错误:line contains NUL。我想这意味着我的CSV文件中有一个奇怪的字符。但是这个程序和导入文件在不同的机器上工作(都是Mac),所以我不知道原因是否是不同版本的Python或者我是如何运行它的。通过阅读其他条目,我认为这一行可能也是原因:

reader = csv.reader(open(filePath, 'r', encoding="utf-8-sig", errors="ignore"))

感谢您的帮助/建议

paths CWD=/Users/sternit/Downloads/Ten-code-4, CPD=/Users/sternit/Downloads/Ten-code/
Traceback (most recent call last):
  File "/Users/sternit/Downloads/Ten-code-4/Master.py", line 145, in <module>
    main()
  File "/Users/sternit/Downloads/Ten-code-4/Master.py", line 114, in main
    playerLists = loadFiles(CPD + "PlayerFiles/")
  File "/Users/sternit/Downloads/Ten-code-4/Master.py", line 50, in loadFiles
    for n, row in enumerate(reader):
_csv.Error: line contains NUL

Tags: 文件inpymasterdownloadslinecode原因
2条回答

如果csv模块说您的读取文件中有一个“NULL”(愚蠢的消息,应该是“NUL”)字节,我建议您检查文件中的内容

尝试使用rb,它可能会使问题消失:

reader = csv.reader(open(filePath, 'rb', encoding="utf-8-sig", errors="ignore"))

根据文件的生成方式,可能包含空字节,因此您可能需要

  1. 在编辑器中打开它,查看它是否是合理的CSV文件,如果文件太大,请在CLI中使用nano^{}

  2. 使用另一个像pandas这样的库,它可能更健壮

  3. 如果问题仍然存在,可以用空字符串替换所有'\x00',

fi = open(filePath, 'rb')
data = fi.read()
fi.close()
fo = open('mynew.csv', 'wb')
fo.write(data.replace('\x00', ''))
fo.close()

这应该很好:

data_initial = open(filePath, "rb")
data = csv.reader((line.replace('\0','') for line in data_initial), delimiter=",")

相关问题 更多 >