[Python] 220 ファイル削除ツールのexe化

ファイルやフォルダを一括削除するツールを作成しました。

[Python] 206で紹介したJSON CSV相互コンバータのGUIを流用しています。

削除したいファイルのあるフォルダのパスを入力するだけです。フォルダかファイルを選択できます。下層ファイルも削除するのでフォルダだけの骨格が残ります。

コードは以下の通りです。PyInstallerでexeファイルを作成しました。

import glob,os,shutil
import sys,json
import tkinter as tk
import tkinter.font as font
from tkinter import ttk

root = tk.Tk()
root.title("FILE REMOVER")
root.geometry("300x80")
root.configure(bg='#FFFACD')

# 設定
my_font = font.Font(root,family="System",size=18,weight="normal")

# フレームの作成・配置
frame = tk.Frame(root,background = '#FFFACD')
frame.grid(row=0,column=0, sticky=tk.NSEW, padx=5, pady=10)

# ラベルの作成・配置
label = tk.Label(frame,text='PATH',background = '#FFFACD',foreground = '#8b0000',font=my_font)
label.grid(row=0, column=0)

# パス入力エントリの作成・配置
entry = tk.Entry(frame,width=15,background = '#98fb98',foreground = '#8b0000',font=my_font)
entry.grid(row=0,column=1)

# 実行ボタンの作成・配置
var_act = tk.IntVar()
btn = tk.Button(frame, text="削除",command=lambda:var_act.set(1),width=2,font=my_font)
btn.grid(row=0,column=2,padx=2)

# クリアボタンの作成・配置
btn2 = tk.Button(frame, text="クリア",command=lambda:entry.delete(0,tk.END),width=2,font=my_font)
btn2.grid(row=1,column=2,padx=2)

# ラジオボタンの作成・配置
var = tk.IntVar()
rb1 = ttk.Radiobutton(frame,text='フォルダ',value=1,variable=var)
rb1.grid(row=1,column=1,padx=2,pady=5,sticky=tk.W)

rb2 = ttk.Radiobutton(frame,text='ファイル',value=2,variable=var)
rb2.grid(row=1,column=1,padx=2,pady=5,sticky=tk.E)

for i in range(100): # 100回処理可能
    # フォルダパスの入力を待機
    btn.wait_variable(var_act)

    # 入力したフォルダパスを取得
    dirpath = entry.get()

    # ラジオボタンのvalueを取得
    v = var.get()

    if v == 1:
        path = dirpath + '/*' # 直下のフォルダを削除
        for f in glob.glob(path):
            if os.path.isdir(f):
                shutil.rmtree(f)
    else:
        path = dirpath + '/**' # 再帰的処理により下層ファイルも削除
        for f in glob.glob(path, recursive=True):
            if os.path.isfile(f):
                os.remove(f)

root.mainloop()