2017-03-07 57 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()