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

ウムにあなたのヘッダーを書いた後にCSVにデータを追加を使用する - ''有効open'モードをT 'のですか? –

+0

@JonClements:私はモードに注意を払っていませんでした。 OPからコピーされたばかりです。修正されました。 –

+2

TypeError: 'fieldnames'はこの関数の無効なキーワード引数です。Python 2.6、PyQt4.7を使用しています。手伝ってくれますか? – Aleksandar

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"は、の末尾にを付加したものです。結論として

- >あなたが同じファイル

+1

最初に別の 'csv.writer()'を作成してから、 'csv.DictWriter()'を追加するために*同じファイル*を開くのはなぜですか? 'writer = csv.DictWriter(outcsv、fieldnames = headers)'と 'writer.writeheader()'だけを使用してください。 –

関連する問題