2016-08-09 23 views
1

CSVファイルに値を書き込んで追加しようとしています。私がスクリプトを実行しているときはいつでも、ヘッダー値はマルチプレックスを印刷しています。私はExcelシートを開いたとき、私はPython CSVファイルに内容を書き込むファイル

enter image description here

を参照してください代わりに

enter image description here

の私のコード:

with open('names.csv', 'a') as csvfile: 
    fieldnames = ['Header1', 'Header2', 'Header3'] 
    writer= csv.DictWriter(csvfile, fieldnames=fieldnames) 
    writer.writeheader() 
    writer.writerow({'Header1':'%s'%(a),'Header2':'%s'%(b),'Header3':'%s'% (c)}) 
+0

「a」、「b」、「c」の定義は何ですか?あなたは同じコードを何度も呼びますか? appendのためにファイルを開いているので、ヘッダーが繰り返される理由が考えられます。 –

+0

@kristof a、b、cは変数です。はい、私は同じコードを実行しています。ヘッダーではなく行だけを追加しようとしています。私は物事が間違っているか分からない –

答えて

0

あなたは、同じコードを複数回実行している場合writer.writeheader()への複数の呼び出しで終了します。これが、結果のファイルでヘッダが繰り返される原因です。

代わりに、コードを複数回呼び出す(各時間を追加し、何度も同じファイルを開く)の、あなたが(例えばlistdictのS)反復可能に書きたい内容を渡すことができます

define write_to_file(rows): 
    with open('names.csv', 'w') as csvfile: 
     fieldnames = ['Header1', 'Header2', 'Header3'] 
     writer= csv.DictWriter(csvfile, fieldnames=fieldnames) 
     writer.writeheader() 

     for row in rows: 
      writer.writerow({'Header1': row['a'], 
          'Header2': row['b'], 
          'Header3': row['a']}) 

文字列フォーマットを使用してdictを定義する理由もありません。

+0

変数aを直接渡すことはできません。変数a、b、cはスクリプトの入力パラメータです。また、私はあなたの解決策を試しましたが、運はありません –

+0

あなたのコードがなければ、私は少し提案することができます。 CSVヘッダーを複数回書くのを避けるためには、何らかの方法で再構成する必要があります。 –

+0

このシーンでどのように行を定義すればよいですか? –

関連する問題