結論から言うと、テキストファイルへ書き込むときは「上書きするのか、追記するのか」を先に決めることが大切です。

Pythonでは openwrite() を使うと、文字列をテキストファイルへ保存できます。
ただし、モードを間違えると既存の内容を消してしまうことがあります。
この記事では、テキストファイルに書き込む基本を、動くコードと一緒に整理します。

この記事でわかること

  • 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書き出しでも、ファイルを開くモードと文字コードの考え方はそのまま使います。

よくある勘違い・注意点

  • mode="w" は追記ではなく上書きです。既存内容を残したいときは a を使います
  • write() は自動で改行しません。必要な場所に \n を入れます
  • 数値やリストをそのまま write() できるわけではありません。基本は文字列にしてから書き込みます
  • 日本語を扱う場合、encoding を省略すると環境によって文字化けすることがあります

まとめ

  • テキストファイルに書き込む基本は with open(..., mode="w")write() です
  • 既存内容を残したい場合は mode="a" で追記します
  • 改行は write() が自動で入れないため、自分で \n を書きます
  • 書き込みの基本を押さえると、CSVやJSONの保存処理にも進みやすくなります