NnmnLog

Python3でCSVを書き出す

作成: 2021-07-04
更新: 2021-07-04
タグ: Python Python3 CSV

Python3では、csvモジュールを使ってCSVを書き出すことができます。

環境

  • Python 3.8.5

CSVデータをファイルに書き出す

ファイルに対してCSVデータを書き込むには、csvモジュールのwriter関数が作成するwriterオブジェクトを使います。

以下のコードは、example1.csvというファイルにCSVデータを書き込みます。

# example1.py
import csv

csv_data = [
    ["header_1", "header_2"],
    ["data_1", "data_2"],
    ["data_3", "data_4"]
]

with open('example1.csv', 'w') as out_file:
    writer = csv.writer(out_file)  # ファイルオブジェクトを渡して、書き込みオブジェクトを得る
    for row in csv_data:
        writer.writerow(row)

まず、writer変数にwriterオブジェクトを作成します。

writter.writerowメソッドでファイルにCSVの行データを書き込んでいきます。

実行すると以下のようなCSVファイルが作成されます。

$ cat example1.csv 
header_1,header_2
data_1,data_2
data_3,data_4

CSVデータを標準出力に書き出す

たまに、何かしらのデータをCSVに変換して標準出力に書き出したい場合があります。

そのような時は、以下のようにcsv.writersys.stdoutを指定すると実現できます。

# example2.py
import csv
import sys

csv_data = [
    ["header_1", "header_2"],
    ["data_1", "data_2"],
    ["data_3", "data_4"]
]

writer = csv.writer(sys.stdout)
for row in csv_data:
    writer.writerow(row)

以下のように、標準出力にCSVを書き出すことができました。

$ python3 example2.py 
header_1,header_2
data_1,data_2
data_3,data_4

これで、中間ファイルを作成せずに次のコマンドにCSVデータを引き渡すというようなことができるようになります。