Pythonでプログラムを書いていて「処理結果をどこかに保存したい」「外部のテキストファイルからデータを読み込んで使いたい」と思ったことはありませんか?プログラムは実行が終わると変数の中身が消えてしまうため、データを永続的に残すにはファイルへの読み書きが必須です。
ファイル操作をマスターすれば、ログを記録したり、設定ファイルを読み込んだり、集計結果をテキストに書き出したりと、Pythonでできることが一気に広がります✨。今日この基本を押さえれば、明日から実用的なツールを自分で作れるようになりますよ🚀
Pythonでファイルを扱うときは、次の3ステップが基本です。
open() 関数でファイルオブジェクトを作る)read() や write() などのメソッドを呼ぶ)close() で後始末する)今回扱うのはテキストファイルです。CSV・JSON・XML・Excelなどは専用モジュール(csv、json など)を使った方が便利なので、それぞれ別途学ぶのがおすすめです📚
ファイル操作の起点となるのが open() 関数です。第1引数にファイルのパス、第2引数にモードを指定して、ファイルオブジェクトを取得します。
f = open("test.txt", "r")
"r"(read):読み込み専用。デフォルト。ファイルが存在しないとエラー"w"(write):書き込み専用。ファイルがなければ新規作成、あれば上書き(既存内容は消える)"a"(append):追記モード。ファイルの末尾に書き足す"r+":読み書き両方OK「上書きされて困った!」という事故は "w" モードの典型的な落とし穴。追記したいなら "a" を使うことを忘れずに⚠️
open() で開いたファイルは必ず close() で閉じる必要があります。閉じ忘れるとファイルが破損したり、メモリリークの原因になったりと、地味に怖いトラブルの元になります。
そこで使うのが with 文です。with ブロックを抜けると自動でファイルが閉じられるので、閉じ忘れの心配がありません。
with open("test.txt", "r") as f:
# ここでファイル操作
s = f.read()
# withを抜けた時点で自動的にcloseされる
変数名は慣習的に小文字の f を使うことが多いです。ファイル操作はwith文を使うのが現代Pythonの標準スタイルと覚えておきましょう✨
ファイルから内容を取り出す方法は、用途に応じて3つあります。
with open("test.txt", "r") as f:
s = f.read()
print(s)
ファイル内のすべての行が、改行コード込みで1つの文字列として返ります。小〜中サイズのファイルを丸ごと処理したいときに便利です。
with open("test.txt", "r") as f:
s = f.readline() # 1行目
s = f.readline() # 2行目
s = f.readline() # 3行目
呼ぶたびに次の1行が取れます。ファイル末尾まで読み終わると空文字列 "" が返ってくるので、while ループで終端判定するのが定番のパターンです。
with open("test.txt", "r") as f:
while True:
line = f.readline()
if line == "":
break
print(line, end="")
with open("test.txt", "r") as f:
lines = f.readlines()
print(lines)
# → ['aaaa\n', 'bbbb\n', 'cccc']
すべての行がリストとして返り、各要素が1行に対応します。最終行以外には改行コード \n が含まれている点に注意しましょう⚠️
with open("test2.txt", "w") as f:
f.write("aaaa\nbbbb\ncccc")
モードを "w" にして write() メソッドを呼ぶだけ。改行は \n を文字列に含めることで表現します。test2.txt が存在しなければ自動で新規作成されます🆕
with open("test2.txt", "a") as f:
f.write("\ndddd\neeee")
モードを "a" にすると、既存ファイルの末尾に追記されます。ログファイルへの書き出しなどでよく使うパターンです。
fruits = ["apple", "orange", "banana"]
with open("test3.txt", "w") as f:
f.writelines(fruits)
注意点として、writelines() は各要素の間に自動で改行を入れてくれません。上のコードを実行すると appleorangebanana と1行で繋がって書き込まれます😅
fruits = ["apple", "orange", "banana"]
with open("test3.txt", "w") as f:
f.write("\n".join(fruits))
文字列の join() メソッドを使うと、リストの各要素を指定した文字(ここでは改行)で結合できます。実用的にはこの書き方の方が圧倒的に便利なので、セットで覚えておきましょう💡
ファイル操作はPythonでの実務作業の基礎中の基礎。体系的に学べる本が手元にあると、応用範囲が一気に広がります✨
ファイル操作はもちろん、CSV・JSON・データベースなど周辺機能まで網羅。「ちょっと困ったとき」に頼れる一生モノの1冊です。
with文の正しい使い方や、リソース管理のベストプラクティスなど、現場で評価される書き方が90項目に凝縮されています。
テキスト・CSV・Excelなど多様なファイル形式を扱う実践的な技術が学べます。データ分析やレポート自動化に興味がある方に最適です。
長時間のコーディングでも疲れにくいキーボードは、写経学習の継続力をしっかり支えてくれます。
コードと出力ファイルを並べて確認できるデュアルディスプレイ環境は、ファイル操作の学習効率を一気に底上げしてくれます🖥️
"w" モードで開いたら大事なファイルが消えました…A. "w" モードは既存ファイルの中身を消して上書きする仕様です。追記したいときは必ず "a" モードを使いましょう。重要なファイルを扱う前には、必ずバックアップを取る習慣もつけることをおすすめします🛡️
A. open() の encoding 引数に "utf-8" を指定するのが基本です。open("test.txt", "r", encoding="utf-8") のように書くと、日本語を含むファイルも正しく読み書きできます。Windowsでは特に明示することをおすすめします。
read()、readline()、readlines() のどれを使うべき?A. ファイルサイズと処理目的で使い分けます。小〜中サイズで丸ごと処理するなら read()、巨大ファイルを1行ずつ処理するなら for line in f: や readline()、各行をリストで扱いたいなら readlines() が定番です。
close() を呼んでもいい?A. 可能ですが、例外が発生したときに close() が呼ばれないリスクがあります。with文を使えば例外時も自動で閉じられるので、現代のPythonではwith文を使うのが推奨です。
A. 読めますが、専用モジュール(csv・json)を使う方が圧倒的に便利です。CSVは区切り文字の処理、JSONはネストした構造の解析を自動でやってくれるので、データを正しく扱うなら専用モジュールを使いましょう。
open() でファイルオブジェクトを作り、with 文で安全に開閉し、read系・write系のメソッドで読み書きする——この基本パターンさえ押さえれば、Pythonでのファイル操作は怖くありません🎉
テキストファイルを自在に扱えるようになると、ログの記録、設定の読み込み、レポート出力、テンプレートからの自動生成など、実務で役立つツールを自分で組み立てられるようになります。明日からあなたのPythonコードはぐっと「使えるツール」へ進化していくはずです🚀
まずは手元のエディターで、簡単なテキストファイルを作って読み書きするところから試してみてください。小さな成功体験の積み重ねが、確実なスキルへとつながります✨