【发布时间】:2011-12-15 05:49:33
【问题描述】:
我正在尝试编写一个查看 .CSV 文件 (input.csv) 并仅重写以某个元素 (corrected.csv) 开头的行的程序,如文本文件 (output.txt )。
这是我的程序现在的样子:
import csv
lines = []
with open('output.txt','r') as f:
for line in f.readlines():
lines.append(line[:-1])
with open('corrected.csv','w') as correct:
writer = csv.writer(correct, dialect = 'excel')
with open('input.csv', 'r') as mycsv:
reader = csv.reader(mycsv)
for row in reader:
if row[0] not in lines:
writer.writerow(row)
不幸的是,我不断收到此错误,我不知道它是关于什么的。
Traceback (most recent call last):
File "C:\Python32\Sample Program\csvParser.py", line 12, in <module>
for row in reader:
_csv.Error: line contains NULL byte
感谢所有here 的人,甚至让我走到了这一步。
【问题讨论】:
-
只是一个猜测,但听起来您的 input.csv 文件包含一个空行(最后是 mebe?)。尝试在 csvParser.py 文件中查找该异常文本。
-
我实际上只是浏览了 input.csv 文件并删除了所有空格......仍然没有运气(同样的错误)。
-
为了查明行号,我建议你引入一个计数器变量并在
for row in reader循环内递增它。 -
当程序本身无法执行时,我不确定我应该怎么做。我尝试添加一个计数器,但没有出现任何不同,只是相同的回溯错误。
-
您的 .csv 文件中有 NULL 字节吗?如果你这样做,
open('input.csv').read().index('\0')会给你第一个的偏移量。