PythonでCSVファイルを読み書き(csv)
この記事ではPythonでCSVファイルを読み書きする方法を解説します。csvモジュールを用いた基本的な操作から、より高度な処理まで網羅します。
目次
- csvモジュールのインポート
- CSVファイルの読み込み
- readerオブジェクトの使い方
- CSVファイルへの書き込み
- writerオブジェクトの使い方
- ヘッダー行の処理
- エラーハンドリング
- エンコーディングの指定
- サンプルコード
csvモジュールのインポート
csvモジュールをインポートして使用開始します。
import csv
CSVファイルの読み込み
csv.readerオブジェクトを使ってCSVファイルを読み込みます。
with open('data.csv', 'r', encoding='utf-8') as file:
reader = csv.reader(file)
for row in reader:
print(row)
readerオブジェクトの使い方
readerオブジェクトはイテレータとして動作し、各行をリストとして返します。
with open('data.csv', 'r', encoding='utf-8') as file:
reader = csv.reader(file, delimiter=',', quotechar='"')
for row in reader:
print(row)
# 各要素へのアクセス
for item in row:
print(item)
CSVファイルへの書き込み
csv.writerオブジェクトを使ってCSVファイルに書き込みます。
with open('output.csv', 'w', newline='', encoding='utf-8') as file:
writer = csv.writer(file)
writer.writerow(['名前', '年齢', '国籍'])
writer.writerow(['山田太郎', '30', '日本'])
writer.writerow(['田中花子', '25', 'アメリカ'])
writerオブジェクトの使い方
writerオブジェクトはwriterowメソッドで一行ずつ書き込みます。
with open('output.csv', 'w', newline='', encoding='utf-8') as file:
writer = csv.writer(file)
data = [['名前', '年齢', '国籍'], ['山田太郎', '30', '日本'], ['田中花子', '25', 'アメリカ']]
writer.writerows(data)
ヘッダー行の処理
ヘッダー行を処理し、辞書として扱う方法
with open('data.csv', 'r', encoding='utf-8') as file:
reader = csv.DictReader(file)
for row in reader:
print(row['名前'], row['年齢'])
エラーハンドリング
ファイルが存在しない場合などのエラー処理
import csv
try:
with open('data.csv', 'r', encoding='utf-8') as file:
reader = csv.reader(file)
# 処理
except FileNotFoundError:
print('ファイルが見つかりません')
except Exception as e:
print(f'エラーが発生しました: {e}')
エンコーディングの指定
ファイルのエンコーディングを指定します。utf-8を推奨
with open('data.csv', 'r', encoding='utf-8') as file:
reader = csv.reader(file)
サンプルコード
簡単なサンプルコード
import csv
# データを準備
data = [['Name', 'Age', 'Country'], ['Alice', '25', 'USA'], ['Bob', '30', 'UK']]
# CSVファイルに書き込む
with open('sample.csv', 'w', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
writer.writerows(data)
# CSVファイルを読み込む
with open('sample.csv', 'r', encoding='utf-8') as f:
reader = csv.reader(f)
for row in reader:
print(row)
関連記事
- PythonでJSONファイルを読み書き(json)
- Pythonでファイルを読み込む(read, readline, readlines)
- Pythonでファイルに書き込む(write, writelines)
- Pythonでファイルを開く・閉じる(open, close)
- Pythonでファイルを追記モードで開く
- Pythonでファイルの上書き・削除
- Pythonでファイルのエンコーディングを指定して読み書き
- Pythonでファイル・ディレクトリの存在確認(os.path.exists, os.path.isfile, os.path.isdir)
- Pythonでファイルをバイナリモードで読み書き
- Pythonでファイル・ディレクトリの操作(os, shutil, pathlib)