2013-04-09 103 views
9

我已經嘗試了很多解決方案來爲我的csv文件添加一個標題,但沒有任何工作正常。他們是:如何在Python中將頭添加到csv文件?

  1. 我使用了writerow方法,但是我的數據覆蓋了第一行。

  2. 我使用了DictWriter方法,但我不知道如何正確填寫它。這裏是我的代碼:

    csv = csv.DictWriter(open(directory +'/csv.csv', 'wt'), fieldnames = ["stuff1", "stuff2", "stuff3"], delimiter = ';') 
    csv.writeheader(["stuff1", "stuff2", "stuff3"]) 
    

我得到了一個「2個參數,而不是一個」錯誤,我真的不知道爲什麼。

有什麼建議嗎?

回答

20

所有你需要做的就是調用DictWriter.writeheader()不帶參數:

with open(os.path.join(directory, 'csv.csv'), 'wb') as csvfile: 
    writer = csv.DictWriter(csvfile, fieldnames = ["stuff1", "stuff2", "stuff3"], delimiter = ';') 
    writer.writeheader() 

已經告訴你的頭是DictWriter()什麼。

+1

烏姆之後 - 被't'有效'open'模式? – 2013-04-09 16:22:36

+0

@JonClements:我沒注意模式;剛從OP複製而來。糾正。 – 2013-04-09 16:23:02

+2

TypeError:'fieldnames'是這個函數的無效關鍵字參數,我使用Python 2.6,PyQt4.7。你能幫我嗎? – Aleksandar 2014-03-11 14:41:22

2

編寫CSV文件時遇到類似的問題。 我不得不閱讀csv文件並修改其中的一些字段。 要寫入在CSV文件中的標題,我使用以下代碼:

reader = csv.DictReader(open(infile)) 
headers = reader.fieldnames 

with open('ChartData.csv', 'wb') as outcsv: 
    writer1 = csv.writer(outcsv) 
    writer1.writerow(headers) 

,當你寫入數據的行,則可以以下面的方式

writer = csv.DictWriter(open("ChartData.csv", 'a'), headers) 

使用DictWriter在上述代碼「a」代表附加

結論 - >使用一個追加數據爲CSV你寫你的頭到同一個文件

+1

爲什麼首先創建一個單獨的'csv.writer()',然後用'csv.DictWriter()'打開*相同的文件*以追加到?只需使用'writer = csv.DictWriter(outcsv,fieldnames = headers)',然後'writer.writeheader()'。 – 2016-08-26 17:11:13