2017-08-15 140 views
2

我正在讀取CSV文件,刪除標題並追加兩列數據。除了最後添加的額外行外,一切都很好。舉例來說,如果我有以下輸入文件:將列添加到CSV文件時附加額外行

headerA | headerB | headerC 
    a | b | c 
    d | e | f 

我想要的輸出文件看起來像:

a | b | c | g | h 
    d | e | f | g | h 

但它出來,如:

a | b | c | g | h 
    d | e | f | g | h 
    g | h 

我不能爲我的生活弄清楚爲什麼是這樣。如果有人有解決方案,將不勝感激。這裏是我的代碼:

for fileName in os.listdir(inPath): 
    if fileName.endswith('.csv'): 
     with open(inPath + fileName, 'rb') as csvin: 
      reader = csv.reader(csvin, delimiter=',') 
      i = reader.next() 
      with open(outPath + 'wrng_' + fileName, 'wb') as csvout: 
       writer = csv.writer(csvout, delimiter=',')       
       for row in reader: 
        j = fileName.split("_")[1].replace(".csv","") 
        row.append(j[2:-7] + '-' + j[4:-5] + '-' + j[:2] + ' ' + j[7:-2] + ':' + j[9:] + ':00') 
        row.append(i[1].split(" ")[2][:-1]) 
        writer.writerow(row) 
+1

CSV文件末尾是否有空行? – digitaLink

+0

@roganjosh當我使用'extend()'時,它將它分成不同的字符,所以「1000」會變成「1,0,0,0」。當我使用'extend()'時,我還會在最後添加額外的行。 – kainy

+0

@digitaLink是的,有。我試圖添加一個if語句來捕獲空行,但不知道如何做到這一點。那會是解決方案嗎? – kainy

回答

0

(從評論總結)它看起來像你有可能是由空行的文件的末尾引起的問題。您可以檢查在for循環中該行是否爲空。

for row in reader: 
    if row: 
    ...