結論から言うと、テキストファイルへ書き込むときは「上書きするのか、追記するのか」を先に決めることが大切です。
Pythonでは open と write() を使うと、文字列をテキストファイルへ保存できます。
ただし、モードを間違えると既存の内容を消してしまうことがあります。
この記事では、テキストファイルに書き込む基本を、動くコードと一緒に整理します。
この記事でわかること
完成コード
完成コードは次の通りです。
from pathlib import Path
file_path = Path("sample_write.txt")
with open(file_path, mode="w", encoding="utf-8") as file:
file.write("今日の作業メモ\n")
file.write("請求書データを確認する\n")
file.write("CSVの列名を見直す\n")
with open(file_path, mode="a", encoding="utf-8") as file:
file.write("レビュー結果を共有する\n")
with open(file_path, mode="r", encoding="utf-8") as file:
print(file.read())コードのポイント
このコードでは、テキストファイルを作成してから、あとで1行追記しています。
mode="w"はファイルを新しく書き込むときに使いますmode="a"は既存ファイルの末尾へ追加するときに使いますwrite()は渡した文字列をそのまま書き込みます- 改行したい場合は、文字列の中に
\nを入れます
書き込みでは、読み込みよりもモードの選び方が重要です。
特に w は既存内容を上書きするため、使う前に意図を確認しておく必要があります。
コードを順番に説明します
主要な処理を分けて説明します。
1. 上書きするときは mode="w" を使います
with open(file_path, mode="w", encoding="utf-8") as file:
file.write("今日の作業メモ\n")
file.write("請求書データを確認する\n")
file.write("CSVの列名を見直す\n")mode="w" は、ファイルへ書き込むための基本モードです。
指定したファイルが存在しない場合は、新しく作成されます。
一方で、すでに同じ名前のファイルがある場合は中身が上書きされます。
そのため、ログや作業履歴のように残したいデータへ使うときは注意が必要です。
2. 改行は自分で入れる必要があります
file.write("今日の作業メモ\n")
file.write("請求書データを確認する\n")write() は、文字列をそのままファイルに書き込みます。print() のように自動で改行してくれるわけではありません。
行を分けて保存したい場合は、文字列の末尾に \n を入れます。
この点を忘れると、複数回 write() しても1行につながって見えることがあります。
3. 末尾へ追加したいときは mode="a" を使います
with open(file_path, mode="a", encoding="utf-8") as file:
file.write("レビュー結果を共有する\n")mode="a" は追記モードです。
既存の内容を残したまま、ファイルの末尾へ新しい文字列を追加します。
作業ログ、処理結果の履歴、エラー記録のように、前の内容を残したい場面では追記が向いています。
上書きと追記を使い分けるだけで、意図しないデータ消失をかなり防ぎやすくなります。
実務で使うときのポイント
実務では、ファイルへ書き込む前に「既存の内容を消してよいか」を確認する癖が大切です。
- レポートを毎回作り直すなら
wが向いています - 処理ログを残していくなら
aが向いています - 日本語を含むファイルでは
encoding="utf-8"を明示すると環境差分を減らしやすいです - 書き込み先のパスを変数にまとめると、後から保存場所を変更しやすくなります
たとえば、集計結果のテキスト出力、簡単なログ保存、手作業メモの生成などでは、この基本形だけでも十分に役立ちます。
次の 3-4 で扱うCSV読み込みや、3-5 のCSV書き出しでも、ファイルを開くモードと文字コードの考え方はそのまま使います。