PythonのcsvモジュールによるCSVファイルの読み書き

Pythonの標準ライブラリであるcsvモジュールは、CSV(Comma Separated Values)形式のファイルを読み書きするためのシンプルで強力な機能を提供します。この記事では、その基本的な使い方を解説します。


目次

CSVファイルの読み込み

CSVファイルを読み込むには、まずファイルをopen()し、そのファイルオブジェクトをcsv.reader()に渡してReaderオブジェクトを作成します。ファイルを安全に扱うため、with文を使用することが推奨されます。

sample_data.csvの準備 以下の内容でsample_data.csvファイルを作成してください。

Timestamp,Event,UserID
2025-09-14 21:00,Login,user123
2025-09-14 21:02,Logout,user123
2025-09-14 21:05,Login,user456

データを読み出すコード Readerオブジェクトはイテレータであり、forループで一行ずつ処理するのが効率的です。各行は、文字列のリストとして取得されます。

import csv

try:
    with open('sample_data.csv', 'r', encoding='utf-8') as f:
        reader = csv.reader(f)
        # Readerオブジェクトをリストに変換して全データを取得することも可能
        # all_data = list(reader)
        # print(all_data)

        # forループで一行ずつ処理する
        for row in reader:
            print(f"行番号: {reader.line_num}, 内容: {row}")

except FileNotFoundError:
    print("エラー: sample_data.csv が見つかりません。")

実行結果:

行番号: 1, 内容: ['Timestamp', 'Event', 'UserID']
行番号: 2, 内容: ['2025-09-14 21:00', 'Login', 'user123']
行番号: 3, 内容: ['2025-09-14 21:02', 'Logout', 'user123']
行番号: 4, 内容: ['2025-09-14 21:05', 'Login', 'user456']

CSVファイルへの書き込み

CSVファイルにデータを書き込むには、csv.writer()Writerオブジェクトを作成します。ファイルを書き込みモードで開く際には、newline=''を指定することが重要です。これにより、WindowsなどのOSで不要な空行が挿入されるのを防ぎます。

writerow()メソッドは、リストを引数として受け取り、CSVファイルに一行として書き込みます。

import csv

# 書き込むデータ(リストのリスト)
output_data = [
    ['Name', 'Department', 'ID'],
    ['Tanaka', 'Sales', 'S001'],
    ['Suzuki', 'Development', 'D002']
]

with open('output.csv', 'w', newline='', encoding='utf--8') as f:
    writer = csv.writer(f)
    # writer.writerows(output_data) # writerowsで一度に書き込むことも可能
    
    for row_data in output_data:
        writer.writerow(row_data)

print("output.csv にデータを書き込みました。")

delimiterlineterminator引数

csv.writer()を生成する際に、オプションのキーワード引数を指定することで、出力形式をカスタマイズできます。

delimiter: フィールド(セル)間の区切り文字を指定します。デフォルトはカンマ,です。タブ区切りのTSVファイルを作成する場合は\tを指定します。 lineterminator: 行末に使われる文字列を指定します。デフォルトは\r\nです。

import csv

tsv_data = [
    ['Fruit', 'Price'],
    ['Apple', 150],
    ['Banana', 120]
]

with open('output.tsv', 'w', newline='', encoding='utf-8') as f:
    # 区切り文字にタブ、行末に改行2つを指定
    writer = csv.writer(f, delimiter='\t', lineterminator='\n\n')
    writer.writerows(tsv_data)

print("output.tsv を作成しました。")

このコードは、タブで区切られ、各行の間に空行が入ったTSVファイルを生成します。

まとめ

Pythonのcsvモジュールは、CSVデータの読み書きを簡単に行うためのReaderWriterオブジェクトを提供します。ファイル操作にはwith文を使い、書き込み時にはnewline=''を指定するのが現代的な作法です。delimiterなどの引数を使えば、TSVのようなCSV以外の区切り文字形式のファイルも柔軟に扱うことができます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次