🐍 Python
read_text() / write_text() でファイルを読み書きする
open()を使ってファイルオブジェクトを扱わなくても、read_text()とwrite_text()を使えば、テキストファイルの読み書きを1行で完結できます。ファイルを開いて閉じる処理を意識する必要がありません。
p.write_text(text, encoding="utf-8") # 全体を上書きして書き込む
p.read_text(encoding="utf-8") # 全体を文字列として読み込む
from pathlib import Path
textfile = Path("note.txt")
textfile.write_text("line1\nline2\n", encoding="utf-8")
content = textfile.read_text(encoding="utf-8")
print(repr(content))
# 'line1\nline2\n'
# 追記したい場合はwrite_text()ではなくopen("a")を使う
from pathlib import Path
textfile = Path("note.txt")
with textfile.open("a", encoding="utf-8") as f:
f.write("line3\n")
print(repr(textfile.read_text(encoding="utf-8")))
# 'line1\nline2\nline3\n'
read_text/write_textの主な引数
encoding- 文字コードを指定する。省略時はOSのデフォルトエンコーディングに依存するため、常に明示するのが安全
p.open(mode, encoding=...)- 追記(
"a")やバイナリ("rb"/"wb")など、上書き以外の操作が必要な場合はこちらを使う
💡 AIコードレビュー観点:write_text()は毎回ファイル全体を上書きする
write_text()はメソッド名から追記のように見えるかもしれませんが、実際には呼び出すたびにファイルの中身を完全に上書きします。AIが生成したコードでログファイルなどに繰り返し書き込むつもりでwrite_text()をループ内で呼んでいると、前回までの内容が消えてしまいます。追記が必要な場合はopen(path, "a", encoding=...)を使いましょう。またencoding引数を省略しているコードは、Windows(既定Shift_JIS系)とLinux/Mac(既定UTF-8)で文字化けの原因になり得るため、常に明示することをおすすめします。