ファイルやフォルダを一括削除するツールを作成しました。
[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()