Python | 1 日 90 分 × 7 日アプリ学習:ファイルに保存するメモ帳(初級編)

Web APP Python
スポンサーリンク

4日目のゴール

4日目のテーマは
「ファイル保存メモ帳を“アプリらしい形”にまとめること」です。

ここまでであなたはすでに、

ファイルに書ける(openwrite
ファイルに追記できる(モード "a"
ファイルから読める(モード "r"

というところまで来ています。

4日目では、これらをバラバラに使うのではなく、

書く機能と読む機能をメニューで選べるようにする
終了するまで何度でも使えるようにする
openwrite を「役割のまとまり」として整理して理解する

ここを目指します。


open と write を「役割のセット」として捉え直す

open は「どのファイルを、どう扱うか」を決める宣言

もう一度、基本形を見てみます。

with open("memo.txt", "a", encoding="utf-8") as f:
    f.write("こんにちは\n")
Python

ここには、3つの大事な情報が入っています。

どのファイルか → "memo.txt"
どう扱うか → "a"(追記)
どんな文字コードか → encoding="utf-8"

open は、
「この条件でファイルを扱います」という宣言です。

ここをあいまいにせず、
「自分は今、どのモードで開いているのか」を
意識できるようになると、ファイル処理のミスが減ります。

write は「ファイルに対する print」

write は、
「画面ではなくファイルに出力する print」
と考えると分かりやすいです。

f.write("テキスト")
Python

これは、

print("テキスト") が画面に出すのに対して、
ファイルの中に書き込む、という違いだけです。

ただし、write は改行を自動で入れないので、
必要なら自分で "\n" を足します。


メモ帳アプリに「メニュー」をつける

書く・読む・終了を番号で選べるようにする

3日目までは、
「起動したら一度だけ書く or 読む」
という形でした。

4日目では、
「アプリを起動したら、何度でも書いたり読んだりできる」
という形にします。

まずはメニュー表示の関数を作ります。

def show_menu():
    print("==========")
    print("ファイル保存メモ帳(4日目)")
    print("1: メモを書く")
    print("2: メモを読む")
    print("0: 終了")
    print("==========")
Python

これで、「アプリの顔」ができました。


書く機能と読む機能を整理しておく

メモを書く関数

def write_memo():
    print("メモを入力してください。空行で終了します。")

    with open("memo.txt", "a", encoding="utf-8") as f:
        while True:
            line = input("> ")

            if line.strip() == "":
                print("入力終了。memo.txt に保存しました。")
                break

            f.write(line + "\n")
Python

ここでの重要ポイントは、

"a" モードで「追記」していること
line + "\n" で「1行ずつ」保存していること

です。

メモを読む関数

def read_memo():
    print("=== 保存されたメモ ===")

    try:
        with open("memo.txt", "r", encoding="utf-8") as f:
            text = f.read()

        if text.strip() == "":
            print("メモはありますが、中身は空です。")
        else:
            print(text)
    except FileNotFoundError:
        print("まだメモがありません。memo.txt が見つかりません。")
Python

ここでの重要ポイントは、

"r" モードで「読み込み専用」で開いていること
ファイルがない場合に FileNotFoundError をキャッチしていること

です。


メニューと機能を「ループ」でつなぐ

終了を選ぶまで何度でも使える形にする

いよいよ、メインの流れを作ります。

def main():
    while True:
        show_menu()
        choice = input("番号を選んでください: ")

        if choice == "1":
            write_memo()
        elif choice == "2":
            read_memo()
        elif choice == "0":
            print("アプリを終了します。")
            break
        else:
            print("不正な入力です。0, 1, 2 のどれかを選んでください。")
Python

これを日本語にすると、こうなります。

メニューを表示する
番号を入力してもらう
“1” ならメモを書く機能を呼ぶ
“2” ならメモを読む機能を呼ぶ
“0” なら終了してループを抜ける
それ以外なら「不正な入力」と表示する

ここで大事なのは、

openwrite の細かい話は
write_memoread_memo の中に閉じ込めておいて、
main では「アプリの流れ」だけを考えられていることです。


4日目のミニアプリ:メニュー付きファイルメモ帳

今日の学びを全部入れたコード

def show_menu():
    print("==========")
    print("ファイル保存メモ帳(4日目)")
    print("1: メモを書く")
    print("2: メモを読む")
    print("0: 終了")
    print("==========")


def write_memo():
    print("メモを入力してください。空行で終了します。")

    with open("memo.txt", "a", encoding="utf-8") as f:
        while True:
            line = input("> ")

            if line.strip() == "":
                print("入力終了。memo.txt に保存しました。")
                break

            f.write(line + "\n")


def read_memo():
    print("=== 保存されたメモ ===")

    try:
        with open("memo.txt", "r", encoding="utf-8") as f:
            text = f.read()

        if text.strip() == "":
            print("メモはありますが、中身は空です。")
        else:
            print(text)
    except FileNotFoundError:
        print("まだメモがありません。memo.txt が見つかりません。")


def main():
    while True:
        show_menu()
        choice = input("番号を選んでください: ")

        if choice == "1":
            write_memo()
        elif choice == "2":
            read_memo()
        elif choice == "0":
            print("アプリを終了します。")
            break
        else:
            print("不正な入力です。0, 1, 2 のどれかを選んでください。")


main()
Python

役割を日本語で言い切ってみる

関数ごとの「一文説明」

show_menu
メモ帳アプリのメニューを表示する。

write_memo
複数行のメモを入力し、memo.txt に追記する。

read_memo
memo.txt を読み込み、内容を画面に表示する。ファイルがなければその旨を表示する。

main
メニューを繰り返し表示し、「書く」「読む」「終了」のどれを実行するかを決める。

ここまで言えれば、
openwrite を「アプリの中の一部」として
ちゃんと扱えている状態です。


4日目のまとめ:今日つかんでほしい感覚

今日の本質は、これです。

open は「どのファイルを、どのモードで扱うか」を決める宣言。
write は「ファイルに対する print」であり、改行は自分で入れる。
書く・読む・メニュー・流れを関数に分けると、
ファイル保存アプリが一気に“アプリらしい形”になる。

ここまで来ているあなたなら、
5日目以降で「ファイル名を変える」「日付ごとに保存する」など、
一段レベルの高いメモ帳にも自然に進んでいけます。

タイトルとURLをコピーしました