5日目のゴール
5日目のテーマは
「ファイル保存メモ帳を“より実用的にするための整理と拡張”を学ぶこと」です。
ここまでであなたは、
ファイルに書ける
追記できる
読み込める
メニューで機能を選べる
というところまで来ています。
5日目ではここから一歩進んで、
ファイル名を自分で決められるようにする
保存処理をより柔軟にする
「open のモード」を状況に応じて使い分ける
アプリとしての“拡張性”を意識する
ここを目指します。
ファイル名を固定にすると不便になる理由
memo.txt だけだと「1つのメモしか保存できない」
今のメモ帳は、
どんなメモを書いても memo.txt に保存される 仕組みです。
これは最初の学習としては正しいのですが、
実際のメモ帳としては不便です。
例えば、
買い物リスト
今日の学習メモ
日記
これらを全部 memo.txt に書くと、
内容が混ざってしまいます。
そこで今日は、
ユーザーがファイル名を決められるメモ帳
に進化させます。
ファイル名を入力してもらう
input でファイル名を受け取るだけで実現できる
まずは、書くときにファイル名を聞いてみます。
filename = input("保存するファイル名を入力してください: ")
Python例えば diary.txt と入力すれば、
その名前で保存されます。
ここでの重要ポイントは、
ファイル名もただの文字列である
ということです。
Python は、
「その名前のファイルを開いて書き込む」
というだけなので、
ファイル名が何であっても問題ありません。
ファイル名を使って書き込む関数にする
write_memo を拡張する
def write_memo():
filename = input("保存するファイル名を入力してください: ")
print("メモを入力してください。空行で終了します。")
with open(filename, "a", encoding="utf-8") as f:
while True:
line = input("> ")
if line.strip() == "":
print(f"入力終了。{filename} に保存しました。")
break
f.write(line + "\n")
Pythonここでの深掘りポイントは、
open(filename, "a") の filename が
ユーザー入力になっていることです。
つまり、
shopping.txt
diary.txt
study.txt
など、好きなファイルに保存できます。
読み込みもファイル名を指定できるようにする
read_memo も同じように拡張する
def read_memo():
filename = input("読み込むファイル名を入力してください: ")
print(f"=== {filename} の内容 ===")
try:
with open(filename, "r", encoding="utf-8") as f:
text = f.read()
if text.strip() == "":
print("ファイルは存在しますが、中身は空です。")
else:
print(text)
except FileNotFoundError:
print(f"{filename} が見つかりません。")
Pythonここでの重要ポイントは、
ファイル名が存在しない場合にFileNotFoundError をキャッチしていることです。
初心者が最初にぶつかるのが
「ファイルがないとエラーになる」問題なので、
ここは丁寧に扱います。
open のモードを状況に応じて使い分ける
“w” と “a” の違いを再確認する
ここで一度、モードの違いを整理します。
“w”(書き込みモード)
ファイルを新しく作る
既存の内容は全部消える
「上書き保存」
“a”(追記モード)
既存の内容を残したまま、末尾に追加
「メモ帳として自然」
“r”(読み込みモード)
ファイルを読むだけ
書き込みはできない
5日目で大事なのは、
「どのモードを使うべきか」を自分で判断できるようになること
です。
メニューに「ファイル名を指定する」流れを組み込む
main を少しだけ改良する
def main():
while True:
print("==========")
print("ファイル保存メモ帳(5日目)")
print("1: メモを書く(ファイル名を指定)")
print("2: メモを読む(ファイル名を指定)")
print("0: 終了")
print("==========")
choice = input("番号を選んでください: ")
if choice == "1":
write_memo()
elif choice == "2":
read_memo()
elif choice == "0":
print("アプリを終了します。")
break
else:
print("不正な入力です。0, 1, 2 のどれかを選んでください。")
Pythonこれで、
複数のファイルを扱えるメモ帳
に進化しました。
5日目のミニアプリ:ファイル名指定メモ帳
今日の学びを全部入れたコード
def write_memo():
filename = input("保存するファイル名を入力してください: ")
print("メモを入力してください。空行で終了します。")
with open(filename, "a", encoding="utf-8") as f:
while True:
line = input("> ")
if line.strip() == "":
print(f"入力終了。{filename} に保存しました。")
break
f.write(line + "\n")
def read_memo():
filename = input("読み込むファイル名を入力してください: ")
print(f"=== {filename} の内容 ===")
try:
with open(filename, "r", encoding="utf-8") as f:
text = f.read()
if text.strip() == "":
print("ファイルは存在しますが、中身は空です。")
else:
print(text)
except FileNotFoundError:
print(f"{filename} が見つかりません。")
def main():
while True:
print("==========")
print("ファイル保存メモ帳(5日目)")
print("1: メモを書く(ファイル名を指定)")
print("2: メモを読む(ファイル名を指定)")
print("0: 終了")
print("==========")
choice = input("番号を選んでください: ")
if choice == "1":
write_memo()
elif choice == "2":
read_memo()
elif choice == "0":
print("アプリを終了します。")
break
else:
print("不正な入力です。0, 1, 2 のどれかを選んでください。")
main()
Python役割を日本語で説明してみる
関数ごとの「一文説明」
write_memo
ユーザーが指定したファイルに、複数行のメモを追記する。
read_memo
ユーザーが指定したファイルを読み込み、内容を表示する。
main
メニューを表示し、「書く」「読む」「終了」を選ばせる。
ここまで言えれば、
ファイル保存アプリの基礎は完全に理解できています。
5日目のまとめ:今日つかんでほしい感覚
今日の本質はこれです。
ファイル名もただの文字列
open のモードは目的に応じて使い分ける
書く・読むを関数に分けるとアプリが整理される
ファイル名を指定できると“実用アプリ”に近づく
6日目では、
「日付ごとに自動でファイル名をつける」
「保存したファイル一覧を表示する」
といった、さらに便利なメモ帳に進化させていきます。

