結論から言うと、Pythonでファイルを開くときは with open(...) を基本にすると、閉じ忘れを防ぎながら安全に扱いやすくなります。

ファイル操作を始めると、open はよく使う関数です。
ただし、モードの違いや encoding の指定があいまいなままだと、読み書きの失敗や文字化けにつながることがあります。
この記事では、open の基本を、動くコードと一緒に整理します。

この記事でわかること

  • open の基本的な書き方
  • with を使ってファイルを開く理由
  • 読み込みと追記でモードを使い分ける考え方

完成コード

完成コードは次の通りです。

from pathlib import Path

file_path = Path("sample_open.txt")
file_path.write_text("朝の作業を確認する\n昼の作業を進める\n", encoding="utf-8")

with open(file_path, mode="r", encoding="utf-8") as file:
    content = file.read()
    print("読み込み結果:")
    print(content)

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("追記後の結果:")
    print(file.read())

コードのポイント

このコードでは、同じファイルを読み込みモードと追記モードで開いています。

  • mode="r" は既存ファイルの内容を読むときに使います
  • mode="a" は末尾へ追記したいときに使います
  • with を使うと、処理が終わったあと自動でファイルが閉じられます
  • encoding="utf-8" を指定すると、日本語を扱うときも意図が明確になります

open はシンプルな関数ですが、モードと文字コードを意識するだけでトラブルを減らしやすくなります。

コードを順番に説明します

主要な処理を分けて説明します。

1. open はファイルパスとモードをセットで考えます

with open(file_path, mode="r", encoding="utf-8") as file:
    content = file.read()
    print(content)

open では、どのファイルをどう開くかを指定します。
この例では file_path を読み込み専用で開いています。

mode="r" は読むための基本モードです。
まずは「読むのか、書くのか、追記するのか」を明確にすると、open の使い方を整理しやすくなります。

2. with を使うと閉じ忘れを防ぎやすくなります

with open(file_path, mode="a", encoding="utf-8") as file:
    file.write("夕方に結果を共有する\n")

with を使うと、このブロックを抜けた時点でファイルが自動的に閉じられます。
そのため、自分で close() を呼び忘れる心配を減らせます。

ファイルはOSの資源を使うため、開いたままにしないことが大切です。
最初から with open(...) を基本形として覚えておくと、実務でも崩れにくくなります。

3. 日本語を扱うなら encoding を明示すると安心です

file_path.write_text("朝の作業を確認する\n昼の作業を進める\n", encoding="utf-8")

with open(file_path, mode="r", encoding="utf-8") as file:
    print(file.read())

日本語を含むファイルでは、実行環境によって文字コードの扱いがずれることがあります。
そこで encoding="utf-8" を明示すると、どの文字コードで読むかがわかりやすくなります。

特に実務では、別のPCやサーバーでも同じ動作を期待することが多いです。
文字化けの切り分けを減らすためにも、テキストファイルでは文字コードをはっきり書く癖が役立ちます。

実務で使うときのポイント

実務では、open を使うときに「何の目的で開くか」と「文字コードは何か」を先に決めると混乱しにくいです。

  • 読むだけなら r、末尾へ追加するなら a と、目的ごとにモードを分けると事故を防ぎやすいです
  • with を使っておくと、例外が起きた場合でもファイルを閉じやすくなります
  • 日本語を含むテキストは encoding="utf-8" を明示すると、環境差分に強くなります
  • パス文字列をあちこちへ直書きするより、変数にまとめておくと保守しやすいです

ログファイルの追記、設定ファイルの読み込み、簡単なレポート出力など、open は小さな自動化で頻繁に登場します。
次の 3-2 で扱うテキスト読み込みや、後続のCSV・JSON処理の土台にもなる考え方です。

よくある勘違い・注意点

  • open したら必ず自分で close() しなければいけない、とは限りません。with を使うほうが基本です
  • a は上書きではなく追記です。既存内容を消したくないときに使います
  • 日本語ファイルで encoding を省略すると、環境によっては文字化けすることがあります
  • 存在しないファイルを r で開くとエラーになるため、前提を確認しておく必要があります

まとめ

  • Pythonでファイルを開く基本は with open(...) です
  • r は読み込み、a は追記という基本を押さえると整理しやすいです
  • 日本語を扱うなら encoding="utf-8" を明示すると安心です
  • open の使い方を理解すると、次のテキスト読み込みやCSV・JSON処理へ進みやすくなります