2017-08-15 107 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: 
    ...