結論から言うと、CSVを書き出すときは標準ライブラリの csv モジュールを使い、列名と行データを分けて考えると整理しやすくなります。
CSVは、Excelで開いたり、別のシステムへ渡したりしやすい形式です。
ただし、文字列を自分でカンマでつなげるだけだと、値の中にカンマが入ったときに崩れることがあります。
この記事では、PythonでCSVを書き出す基本を、動くコードと一緒に整理します。
この記事でわかること
完成コード
完成コードは次の通りです。
import csv
from pathlib import Path
csv_path = Path("sample_output.csv")
rows = [
{"date": "2026-04-01", "item": "ノート", "amount": 1200},
{"date": "2026-04-02", "item": "ペン", "amount": 300},
{"date": "2026-04-03", "item": "ファイル", "amount": 800},
]
fieldnames = ["date", "item", "amount"]
with open(csv_path, mode="w", encoding="utf-8", newline="") as file:
writer = csv.DictWriter(file, fieldnames=fieldnames)
writer.writeheader()
writer.writerows(rows)
print(csv_path.read_text(encoding="utf-8"))コードのポイント
このコードでは、辞書のリストをCSVファイルとして書き出しています。
fieldnamesでCSVの列名と列の順番を決めていますcsv.DictWriterを使うと、辞書のキーと列名を対応させて書き出せますwriteheader()は1行目の見出しを書き込みますwriterows()は複数行のデータをまとめて書き込みますnewline=""を指定すると、CSVの改行処理をcsvモジュールに任せやすくなります
CSVを書き出す処理では、どの列をどの順番で出すかを明確にしておくと、後から見直しやすくなります。
コードを順番に説明します
主要な処理を分けて説明します。
1. 書き出したいデータを辞書のリストで用意します
rows = [
{"date": "2026-04-01", "item": "ノート", "amount": 1200},
{"date": "2026-04-02", "item": "ペン", "amount": 300},
{"date": "2026-04-03", "item": "ファイル", "amount": 800},
]ここでは、1行分のデータを1つの辞書で表しています。date、item、amount がCSVの列に対応します。
実務では、集計結果、検索結果、画面から入力されたデータなどを、このような形に整えてからCSVへ出力することが多いです。
行ごとの意味が見えるため、リストだけで持つより読みやすくなります。
2. fieldnames で列名と順番を決めます
fieldnames = ["date", "item", "amount"]fieldnames は、CSVへ出力する列名の一覧です。
この順番でCSVの列が並びます。
辞書はキーで値を取り出せますが、CSVは列の並びも大切です。
そのため、出力前に fieldnames を明示しておくと、列の順番が安定します。
3. DictWriter で見出しとデータを書き込みます
with open(csv_path, mode="w", encoding="utf-8", newline="") as file:
writer = csv.DictWriter(file, fieldnames=fieldnames)
writer.writeheader()
writer.writerows(rows)csv.DictWriter は、辞書をCSVの行として書き出すための仕組みです。writeheader() で列名を書き、writerows() で複数行をまとめて出力しています。
mode="w" は上書きモードです。
同じファイル名がすでにある場合は中身が作り直されるため、毎回最新のCSVを出力したい場面に向いています。
実務で使うときのポイント
実務でCSVを書き出すときは、出力先でどう使われるかを先に確認すると、後から修正しやすくなります。
- Excelで開くCSVなのか、別システムへ渡すCSVなのかで文字コードの要件が変わることがあります
- 列名は出力先の仕様に合わせて固定すると、読み込み側の処理が安定します
- 金額や日付は、CSVへ書き出す前に表記をそろえておくと扱いやすいです
- 既存ファイルを残したい場合は、上書き前に保存先やファイル名を確認します
売上レポート、在庫一覧、処理結果の出力、別ツールへ渡すデータ作成など、CSV書き出しは自動化でよく使います。
前の 3-4 のCSV読み込みと合わせて押さえると、CSVを使った簡単な変換処理を組み立てやすくなります。