Pythonでファイルを開く・読み込む・書き込む方法(open() の使い方)
生徒
「Pythonで、ファイルに文字を書いたり、中身を読む方法ってありますか?」
先生
「はい、Pythonではopen()関数を使うとファイルを開いて、読み書きができます。テキストファイルもCSVファイルも扱えますよ。」
生徒
「openって名前の通り、ファイルを開く関数なんですね。どうやって使うんですか?」
先生
「使い方はとても簡単です。ファイルのパスとモードを指定するだけで開けます。では基本から説明していきましょう。」
1. open()関数とは?
open()関数は、Pythonでファイルを開くための基本的な関数です。使い方は次のように、第一引数にファイルのパス、第二引数にモードを指定します。
"r":読み込み専用(Read)"w":書き込み専用(Write、上書き)"a":追記(Append)"b":バイナリモード
例えば、テキストファイルを読み込む場合は次のように書きます。
f = open("sample.txt", "r", encoding="utf-8")
data = f.read()
f.close()
print(data)
2. with文を使ったファイル操作
ファイルを開いたら、最後に必ずclose()で閉じる必要があります。これを忘れると、ファイルがロックされたままになったり、データが保存されないことがあります。そこで便利なのがwith文です。withを使うと、自動的にファイルを閉じてくれます。
with open("sample.txt", "r", encoding="utf-8") as f:
data = f.read()
print(data)
3. ファイルに書き込む方法
ファイルに新しい内容を書き込むには、"w"モードか"a"モードを使います。"w"は既存の内容を消して上書きし、"a"は末尾に追加します。
with open("output.txt", "w", encoding="utf-8") as f:
f.write("こんにちは、Python!\n")
(output.txt に「こんにちは、Python!」が書き込まれる)
追記する場合は"a"モードにします。
with open("output.txt", "a", encoding="utf-8") as f:
f.write("2行目の文章です。\n")
4. 行単位で読み込む
read()はファイル全体を文字列として読み込みますが、大きなファイルではメモリを圧迫します。readline()やreadlines()を使えば行ごとに読み取れます。
with open("sample.txt", "r", encoding="utf-8") as f:
for line in f:
print(line.strip())
5. バイナリファイルの読み書き
画像や音声ファイルなど、テキストではないデータを扱うときはバイナリモード"b"を使います。
with open("image.png", "rb") as f:
data = f.read()
with open("copy.png", "wb") as f:
f.write(data)
6. プログラミング未経験者へのアドバイス
ファイル操作はPython入門の中でも重要な基礎です。まずは小さなテキストファイルを使って、読み込み・書き込み・追記の動きを試してみましょう。with open()を使えば閉じ忘れがなく安全です。
また、ファイルパスは絶対パスと相対パスがあります。相対パスはプログラムがある場所からの位置関係で指定でき、絶対パスはパソコン全体から見た位置を示します。初心者のうちは相対パスで練習するのがおすすめです。
まとめ
Pythonでファイルを開く・読み込む・書き込むといった基本操作は、プログラムの基礎でありながら幅広い場面で活用される大切な知識です。とくにopen()関数の役割や、読み込み専用・書き込み専用・追記などのさまざまなモードの違いを理解することで、テキストファイルやログファイルの処理、データ保存や設定ファイルの読み取りなど、多くの作業を自分のプログラムの中に組み込めるようになります。また、ファイルを扱う際に気をつけたいのが、開いたファイルを適切に閉じることです。これはメモリの確保やデータの破損防止に直接関係しており、実際の開発現場でも非常に重要視されるポイントです。
そこで便利なのがwith文で、これを使えばファイルを開いたあとに自動で閉じてくれるため、初心者でも安全にファイル操作が行えます。とくに、読み込みと書き込みを繰り返すような処理では、with open()を正しく使うだけでコードの見通しが良くなり、意図しないトラブルを回避できます。さらに、行単位で読み込む方法やバイナリファイルを扱う技術を理解すれば、テキストデータに限らず幅広い形式のデータを扱えるようになり、Pythonの可能性がいっそう広がります。
テキストファイルに文章を書く「書き込み」、既存の内容の末尾に追加する「追記」、一行ずつ処理を行う「行読み込み」、そして画像や音声といった非テキストデータを扱う「バイナリモード」。これらの基本操作は、データ処理の自動化やファイルログの記録など、日常的なプログラム作成に欠かせない要素です。また、初心者がつまずきがちなポイントとして、ファイルパスの指定があります。相対パスと絶対パスの理解は、ファイル操作を行う上で無視できませんが、慣れてくれば自然と使い分けられるようになります。
プログラムのなかで扱うデータを自由自在に保存し、読み取り、加工するためにも、ファイル操作の基礎をしっかり押さえておくことが大切です。実際に小さなテキストファイルを作り、読み書きしてみることで、Pythonの動作をより深く体感できるでしょう。これらの技術を身につけることで、データ分析や自動化スクリプト、アプリケーション開発など、より実践的なプログラミングの世界に進む準備が整います。
サンプルプログラム(まとめ用)
以下は、読み込み・書き込み・追記を一通り試せるまとめ用サンプルです。
# 1. 上書きして書き込む
with open("summary.txt", "w", encoding="utf-8") as f:
f.write("これはまとめ用のサンプルファイルです。\n")
# 2. 追記する
with open("summary.txt", "a", encoding="utf-8") as f:
f.write("2行目の文章を追加しています。\n")
# 3. 行ごとに読み込む
with open("summary.txt", "r", encoding="utf-8") as f:
for line in f:
print("読み込んだ行:", line.strip())
このコードでは、まず上書きモードで新しい文章を保存し、次に追記モードで行を追加し、最後に行単位で読み込んで内容を表示します。ファイル操作の基本を一通り復習しながら実践できる構成になっています。
生徒
「ファイルを開いて読み書きする方法がよく分かりました!open()のモードを切り替えるだけで、読み込み・上書き・追記ができるのが便利ですね。」
先生
「そうですね。モードさえ理解すれば、必要な処理に合わせて柔軟に使い分けられます。特にwith文はファイルを閉じる手間を省いてくれるので、とても使いやすいですよ。」
生徒
「行ごとに読む方法も便利でした。大きなファイルを扱うときに役立ちそうです。それとバイナリモードで画像をコピーできるのが意外でした。」
先生
「非テキストのファイルを扱う場面は意外と多いので覚えておくと良いですよ。Pythonはファイル操作に強いので、データ処理の幅がとても広がります。」
生徒
「ファイルパスの指定に慣れるまでは少し練習が必要ですが、操作自体はすごくシンプルですね。自分でもいろいろ試してみます!」
先生
「その意欲ならすぐに慣れますよ。実際に何度も読み書きしてみて、Pythonのファイル操作に親しんでいきましょう。」