2017-03-07 62 views
2

我正在编译一个CSV负载。第一个CSV包含标题,我在写入模式下打开(maincsv)。然后我列出所有其他文件夹的列表,并将它们添加到主文件夹中。写入到打开的CSV时跳过标题

它的作品,但它只是写在标题。我只是想从第2行开始追加。我确定这很简单,但所有的next()等我尝试只是抛出错误。如果有帮助,标题和数据是一致的。

import os, csv 

maincsv = open(r"C:\Data\OSdata\codepo_gb\CodepointUK.csv", 'w', newline='') 
maincsvwriter = csv.writer(maincsv) 
curdir = os.chdir(r"C:\Data\OSdata\codepo_gb\Data\CSV") 
csvlist = os.listdir() 
    csvfiles = [] 
    for file in csvlist: 
     path = os.path.abspath(file) 
     csvfiles.append(path) 

for incsv in csvfiles: 
    opencsv = open(incsv) 
    csvreader = csv.reader(opencsv) 
    for row in csvreader: 
     maincsvwriter.writerow(row) 

maincsv.close() 
+0

如果您*不想删除现有内容,您为什么要在“w”模式下打开它? – jonrsharpe

+0

jonrsharpe建议您以追加模式“a”打开它。 – Denziloe

+0

啊'追加'模式...很明显,它伤害了!感谢那。 – Elnombre

回答

1

为了简化问题我的代码加载在Python代码在运行目录下的所有文件。这将让第一.csv文件的第一行,并用它作为标题。

import os 
count=0 
collection=open('collection.csv', 'a') 
files=[f for f in os.listdir('.') if os.path.isfile(f)] 
for f in files: 
    if ('.csv' in f): 
     solecsv=open(f,'r') 
     if count==0: 
      # assuming header is 1 line 
      header=solecsv.readline() 
      collection.write(header) 
     for x in solecsv: 
      if not (header in x): 
       collection.write(x) 
collection.close()