1.ファイル操作とは
ファイル操作とは、Python を使って
テキストファイルを読んだり書いたりすること です。
代表的な用途:
- ログを保存する
- 設定ファイルを扱う
- データ(CSV / JSON)を読み込む
- Webスクレイピングの結果を書き込む
Python では open() や with を使って簡単に扱えます。
2.ファイルを開く基本(open)
基本形:
open(ファイル名, モード, encoding="utf-8")
3.モード(重要)
| モード | 説明 |
| “r” | 読み込み |
| “w” | 書き込み(上書き) |
| “a” | 追記(最後に追加) |
| “x” | 新規作成(既にあるとエラー) |
4.ファイルを書き込む(write)
最も基本的なファイル書き込み:
f = open("test.txt", "w", encoding="utf-8")
f.write("こんにちは\n")
f.close()
close() を忘れるとデータが書き込まれないことがある。tryのfinallyか後述のwithを使って必ずcloseすること。
5.with構文を使う(おすすめ)
with を使うと、自動で close してくれるため安全です。
with open("test.txt", "w", encoding="utf-8") as f:
f.write("こんにちは\n")
これが Python の標準スタイル。
6.ファイルを読み込む
✔ すべて読み込む:read()
with open("test.txt", "r", encoding="utf-8") as f:
text = f.read()
print(text)
✔ 1行ずつ読む:readline()
with open("test.txt", "r", encoding="utf-8") as f:
line = f.readline()
print(line)
✔ 全行をリストで読み込む:readlines()
with open("test.txt", "r", encoding="utf-8") as f:
lines = f.readlines()
print(lines)
✔ for 文で1行ずつ読む(最もよく使う)
with open("test.txt", "r", encoding="utf-8") as f:
for line in f:
print(line.strip())
strip() を使うと改行文字 \n を消せる。
7.追記(a モード)
既存ファイルの末尾に追加:
with open("log.txt", "a", encoding="utf-8") as f:
f.write("ログ追加\n")
8.ファイルの存在チェック
ファイルの存在チェック等はosのファイルシステムの機能であるため、osの機能を使えるようにする必要がある。これを可能にするのが「import os」のosモジュール。インポートするものはプログラムの冒頭の方に記載する。
import os
if os.path.exists("data.txt"):
print("あります")
else:
print("ありません")
9.CSVファイルの読み書き
Python 標準の csv モジュールを使う。
✔ 書き込み
import csv
with open("data.csv", "w", encoding="utf-8", newline="") as f:
writer = csv.writer(f)
writer.writerow(["name", "age"])
writer.writerow(["Alice", 20])
newline=””を指定することでCSVファイルに書き込むときに余計な改行を何もない状態に置き換えることができる。
csv.writerはCSVファイルに書き込む専用のオブジェクトを作る関数。
writerowはCSVファイルに要素を1行ずつ書き込む関数。
✔ 読み込み
import csv
with open("data.csv", "r", encoding="utf-8") as f:
reader = csv.reader(f)
for row in reader:
print(row)
csv.readerはCSVファイルの読み込み専用のオブジェクトを作る関数。
10.JSON ファイルの読み書き
Web API や設定ファイルでよく使います。Jsonもjsonモジュールをインポートすることで扱えるようになります。
✔ 書き込み
import json
data = {"name": "Alice", "age": 20}
with open("user.json", "w", encoding="utf-8") as f:
json.dump(data, f, ensure_ascii=False, indent=2)
json.dumpで書き込みたいデータをJSON形式にして保存。ensure_ascii=Falseで日本語をそのまま保存。indentで見やすいように2スペースで形成。
✔ 読み込み
import json
with open("user.json", "r", encoding="utf-8") as f:
data = json.load(f)
print(data)
json.loadは対象のファイルをdict辞書に変換して読み込む(キーと要素のセット)。
