非常に簡単なはずの課題があるのですが、どうも解決できないようです。
Python 辞書を csv ファイルに書き込むにはどうすればよいですか? 辞書のキーをファイルの一番上の行に書き込み、キーの値を 2 行目に書き込みたいだけです。
私がこれまでに得た中で最も近いものは次のとおりです(他の人の投稿から得たものです)。
f = open('mycsvfile.csv','wb')
w = csv.DictWriter(f,my_dict.keys())
w.writerows(my_dict)
f.close()
問題は、上記のコードでは最初の行にキーのみが書き込まれ、それだけであるように見えることです。2 行目に書き込まれた値は取得されません。
何か案は?
ベストアンサー1
DictWriter.writerows()
辞書ではなく辞書のリストを期待する を使用しています。 DictWriter.writerow()
1 行を書き込みたいのです。
DictWriter.writeheader()
csv ファイルにヘッダーが必要な場合にも使用できます。
こちらもチェックしてみてください声明with
のためにファイルを開くより Python らしくて読みやすいだけでなく、例外が発生した場合でも自動的に閉じる処理が行われます。
これらの変更を加えた例:
import csv
my_dict = {"test": 1, "testing": 2}
with open("mycsvfile.csv", "w", newline="") as f:
w = csv.DictWriter(f, my_dict.keys())
w.writeheader()
w.writerow(my_dict)
これによって次のものが生成されます:
test,testing
1,2
コメントに記載されているように、newline=""
CSVライターは独自の改行管理を行うため、 を使用します。そのため、 の組み込み管理は無効にしますopen()
。ドキュメントに記載されている通り。