我目前正在處理~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]])
任何人有任何想法,這是怎麼回事錯在這裏?
公司發行的最後調試之前而發出'writerow'打印整行,並告訴輸出。 – ALH
例如:'如果len(row)<= 3:print'這就是!' – ALH