2013-04-09 101 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