2013-07-01 55 views
6

當我試圖將一個dicts列表寫入CSV文件時,我正在查看以前SO問題which can be found here的非常有用的答案。我使用的代碼是:瞭解python中的csv DictWriter語法

with open((filename), 'wb') as outfile: 
    write = csv.DictWriter(outfile, keyList) 
    write.writer.writerow(keyList) 
    write.writerows(data) 

其中鍵列表是頭CSV文件的列表。

該代碼工作得很好,這很好,但我不明白爲什麼我必須明確地調用底層writer實例來編寫keyList(標題)。我試圖將該行作爲write.writerow(keyList),但沒有奏效。我很好奇爲什麼這樣可以更好地理解Python的DictWriter的工作原理。

是否有更清晰/更好的書寫方式?

+0

什麼錯誤不'write.writerow(鍵列表)'扔? – Blender

+0

@Blender:'AttributeError:'list'object has no attribute'get'' –

+0

它給了我'AttributeError:'list'object has no attribute'get'' – user139014

回答

3

您似乎依賴無證行爲。 A DictWriter對象沒有「官方」writer方法。

correct way to output the CSV headers是調用

write.writeheader() 
+0

這是有道理的,但我該如何指定writeheader函數的頭文件?當我試圖在代碼'write.writeheader(keyList)'中傳遞keyList時,它拋出'TypeError:writeheader()只需要1個參數(給出2)' – user139014

+1

@ kg41:你不需要 - 當你指定標題時構建'DictWriter'對象。 '.writeheader()'沒有參數被調用(單個參數是隱式'self')。 –

+0

忽略我,我是個白癡。剛剛調用'writeheader()'沒有參數,它的工作。謝謝@Tim。 – user139014