Pythonでファイル操作をマスター!読み書き・CSV・JSONの基本を徹底解説
Pythonでのファイル操作(読み書き、CSV、JSON)をwith文を使って安全に実装する方法を解説。初心者でもわかるサンプルコード付き。
はじめに
Pythonでファイルを読み書きする処理は、データ分析やWeb開発など様々な場面で必要になります。この記事では、基本的なテキストファイルの読み書きから、CSVやJSONといった構造化データの扱い方まで、with文を使った安全な方法で解説します。
ファイルを開く・閉じる:with文を使おう
ファイル操作の基本は、ファイルを開いて(open)、処理をして、閉じる(close)ことです。しかし、エラーが発生した場合などにcloseを忘れるとリソースリークの原因になります。そこで推奨されるのがwith文です。
with open('sample.txt', 'r', encoding='utf-8') as f:
content = f.read()
<h1>withブロックを抜けると自動的にcloseされる</h1>
open関数のモードは以下の通りです。
'r': 読み込み'w': 書き込み(上書き)'a': 追記'r+': 読み書き両方'b': バイナリモード(例:'rb')テキストファイルの読み書き
ファイルの読み込み
ファイル全体を読み込むにはread()、1行ずつ読み込むにはreadline()やイテレーションを使います。
<h1>全体を読み込み</h1>
with open('sample.txt', 'r', encoding='utf-8') as f:
content = f.read()
<h1>1行ずつ読み込み</h1>
with open('sample.txt', 'r', encoding='utf-8') as f:
for line in f:
print(line.strip()) # 改行除去
ファイルへの書き込み
書き込みはwrite()メソッドを使います。
with open('output.txt', 'w', encoding='utf-8') as f:
f.write('Hello, Python!\n')
f.write('ファイル操作の練習\n')
追記したい場合はモードを'a'にします。
CSVファイルの読み書き
CSV(Comma-Separated Values)は表形式のデータを扱うのに便利です。Pythonの標準ライブラリcsvを使います。
CSVの読み込み
import csv
with open('data.csv', 'r', encoding='utf-8') as f:
reader = csv.reader(f)
for row in reader:
print(row) # リストとして取得
辞書形式で読み込むにはcsv.DictReaderを使います。
with open('data.csv', 'r', encoding='utf-8') as f:
reader = csv.DictReader(f)
for row in reader:
print(row['name'], row['age'])
CSVの書き込み
import csv
with open('output.csv', 'w', encoding='utf-8', newline='') as f:
writer = csv.writer(f)
writer.writerow(['名前', '年齢', '都市'])
writer.writerow(['Alice', 30, 'Tokyo'])
writer.writerow(['Bob', 25, 'Osaka'])
newline=''を指定することで、余計な改行を防げます。
JSONファイルの読み書き
JSON(JavaScript Object Notation)は設定ファイルやAPIのデータ形式として広く使われています。jsonモジュールを使います。
JSONの読み込み
import json
with open('data.json', 'r', encoding='utf-8') as f:
data = json.load(f) # 辞書やリストとして取得
JSONの書き込み
import json
data = {
'name': 'Alice',
'age': 30,
'city': 'Tokyo'
}
with open('output.json', 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=4)
ensure_ascii=Falseで日本語をそのまま出力、indent=4で見やすく整形します。
応用例:CSVからJSONへの変換
実際の業務では、CSVデータをJSONに変換するケースがよくあります。
import csv
import json
csv_file = 'input.csv'
json_file = 'output.json'
data = []
with open(csv_file, 'r', encoding='utf-8') as f:
reader = csv.DictReader(f)
for row in reader:
data.append(row)
with open(json_file, 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=4)
エラーハンドリング
ファイル操作では、ファイルが存在しない、権限がないなどのエラーが発生する可能性があります。try-exceptで適切に処理しましょう。
try:
with open('nonexistent.txt', 'r') as f:
content = f.read()
except FileNotFoundError:
print('ファイルが見つかりません。')
except PermissionError:
print('ファイルを開く権限がありません。')
まとめ
Pythonでのファイル操作の基本を解説しました。ポイントは以下の通りです。
with文を使ってファイルを安全に扱うcsvモジュール、JSONはjsonモジュールを使うこれらのテクニックをマスターすれば、データの入出力がスムーズになります。ぜひ実際にコードを書いて練習してみてください。