处理“大”csv文件时接收看似随机的IndexErrors
我目前正在处理~60-70 MB csv文件的脚本。首先,我从一个标签文件翻译csv文件(不需要,但不管这里是什么问题)。在下一步中,我通过csv的行来做两件事:
1)检查第二列中的值。如果此值自上一行以来已更改,请创建一个新的输出文件。
2)将当前行的某些列值传输到输出文件。 我有几个脚本自动执行的选项卡文件。它对大多数人来说工作正常,但有时我得到一个... ...处理“大”csv文件时接收看似随机的IndexErrors
IndexError: list index out of range
...没有明显的原因。我查看了它正在分裂的csv文件,错误前后的行看起来也是一样的。
我试着通过尝试/除了outputWriter至少有一些错误(这已经不是最理想的,因为我不想丢失数据)工作。但是,我从另一行处理索引变量的代码中得到相同的错误。
给你举一个例子,这里是最后三行在我的输出文件中的脚本停止前:
154881105,-0.293776585182967
154883302,0.168302231277491
154883397,0.175177022786097
这里有相应的线路是从阅读加上一个应该一直在旁边:
87018,23,154881105,-0.293776585182967
87019,23,154883302,0.168302231277491
87020,23,154883397,0.175177022786097
87021,23,154883513,0.949924732250711
我错过了什么吗?我没有看到任何理由为什么指数应该超出范围。
最后,这里是我的代码的部分,应该是相关的:
with open (newCsv, 'rU') as csvfile:
plotlist = csv.reader(csvfile, delimiter=',', dialect=csv.excel_tab)
x = 0
for i, row in enumerate(plotlist):
if is_number(row[1]):
if row[1] != x:
x = row[1]
fileName = "sample" + str(x) + ".csv"
outputFile = open(fileName, "w")
outputWriter = csv.writer(outputFile)
outputWriter.writerow(["y","x"])
outputWriter.writerow([row[2], row[3]])
任何人有任何想法,这是怎么回事错在这里?
下面的错误明确地告诉你,为确保你能获得一个指数,这是不是在列表中实际存在的(?):
IndexError: list index out of range
因此,对于更好的调试,你可以跟踪一步错误之前的步骤:
if len(row)<=3:
print "Here's the culprit: %s" % row
你几乎会看到的是由上面的代码:)
是的,我可以看到,造成错误的行只携带1或2个项目。现在我需要弄清楚为什么,因为这条线明显由4个元素组成,分隔为“,” – fakechek
公司发行的最后调试之前而发出'writerow'打印整行,并告诉输出。 – ALH
例如:'如果len(row) ALH