# ============================================================
# ファイル整理ツール (見本・答え) ― Step 4 プログラミングコース 卒業制作 路線A
# 「seiri-renshu」フォルダの中のファイルを、拡張子ごとのフォルダに仕分けします。
#
# 安全の仕組み:
#   ・触るのは、このファイルと同じ場所の「seiri-renshu」フォルダの中だけです。
#   ・ファイルは消しません。「移動」するだけです。
#
# 動かし方:
#   1回目:  python seiri-mihon.py  → 練習用フォルダとダミーファイルが作られる
#   2回目:  python seiri-mihon.py  → 仕分けが実行される
#
# 使い方: まず写して動かす → 改造のヒント (一番下) へ。
# ============================================================

from pathlib import Path   # フォルダやファイルをあつかう道具
import shutil               # ファイルを移動する道具

RENSHU = Path("seiri-renshu")   # 練習用フォルダの名前


# 練習用フォルダと、中身のダミーファイルを作る
def renshu_folder_wo_tsukuru():
    RENSHU.mkdir()
    dummy = ["memo1.txt", "memo2.txt", "shashin1.png", "shashin2.png",
             "uriage.csv", "happyou.pdf"]
    for namae in dummy:
        (RENSHU / namae).write_text("これは練習用のダミーファイルです。", encoding="utf-8")
    print("練習用フォルダ「seiri-renshu」と、ダミーファイル6個を作りました。")
    print("もう一度 python seiri-mihon.py を実行すると、仕分けが始まります。")


# 拡張子ごとに仕分けする
def shiwake():
    kazu = 0
    for f in RENSHU.iterdir():
        if f.is_dir():
            continue   # フォルダは仕分けの対象外。次へ。

        # 拡張子 (.txt など) から、入れ先フォルダの名前を決める (txtフォルダ など)
        kakuchoushi = f.suffix.replace(".", "")
        if kakuchoushi == "":
            kakuchoushi = "sonota"
        irese = RENSHU / kakuchoushi

        # 入れ先フォルダがなければ作って、ファイルを移動する
        irese.mkdir(exist_ok=True)
        shutil.move(str(f), str(irese / f.name))
        print(f.name + " → " + kakuchoushi + " フォルダへ")
        kazu = kazu + 1

    print("仕分け完了! " + str(kazu) + "個のファイルを移動しました。")


# ここから実行が始まる
if not RENSHU.exists():
    renshu_folder_wo_tsukuru()
else:
    shiwake()

# ---------- 改造のヒント ----------
# その1: ダミーファイルの種類をふやして、もう一度試してみよう。
#   (seiri-renshu フォルダを一度削除してから、やり直します)
# その2: 「png は gazou フォルダへ」のように、自分の好きなフォルダ名の
#   ルールに変えてみよう。ヒント: if kakuchoushi == "png": の条件分岐です。
# その3 (発展): 本物のダウンロードフォルダで使う前に、必ず「コピーした
#   練習フォルダ」で試すこと。本番ファイルをあつかう責任の感覚も、
#   この卒業制作で学ぶことの1つです。
# ----------------------------------
