import tkinter from tkinter import * import os path = 'C:\\Users\\1\\AppData\\Local\\Microsoft\\Windows\\Temporary Internet Files' class Clean: #传入window参数 def __init__(self,init_window): self.mywindow = init_window def set_window(self): self.mywindow.title('清除本机缓存') #清除按钮 self.clean_button = Button(self.mywindow, text='点击清除', width=10, command=self.clean_file)#设置按钮,调用clean_file方法 self.clean_button.grid(row=1, column=1) self.information_text = Label(self.mywindow, text='', width=10) self.information_text.grid(row=2, column=1) #想写个递归函数,但是按钮上面事件触发貌似不能加参数,只能用这个函数再次调用有参数的函数 def clean_file(self): self.clean_file2(path) def clean_file2(self,path): for i in os.listdir(path):#获取这个path里面所有文件的文件名(包含文件夹) file_path = os.path.join(path,i)#通过join方法将路径和文件名组合起来,变成绝对路径 print(file_path)#打印这个文件绝对路径 if os.path.isfile(file_path):#判断,如果是普通文件,则进行remove,如果是文件夹,那么调用递归,将二级目录传回去再次执行 try: os.remove(file_path) except:#有报错,直接忽略 pass else: self.clean_file2(file_path)#添加这句,可以删除子文件夹内容,删除这句则跳过文件夹 def new_window(): newwindow = tkinter.Tk()#新建窗口,并通过Clean类设置窗口 mywin = Clean(newwindow) mywin.set_window() newwindow.mainloop()#保持窗口运行 new_window()本来想写一个删除浏览器缓存的小工具,但是发现浏览器缓存的文件夹Temporary Internet Files有莫名其妙的规则,里面还有数个文件夹,如何保存缓存文件也搞不懂,只能将工具的逻辑写成删除这个文件夹下所有的文件(包括子文件夹中的文件),途中遇到报错,提示说文件正在使用中,所以直接加报错处理,将使用中的文件直接跳过。
更新:
import tkinter from tkinter import * import os path = 'C:\\Users\\1\\AppData\\Local\\Microsoft\\Windows\\Temporary Internet Files' class Clean: #传入window参数 def __init__(self,init_window,path): #在定义类的时候,我多传了一个path参数,修改代码中直接调 self.mywindow = init_window #类外参数的问题,让代码更规范 self.path = path def set_window(self): self.mywindow.title('清除本机缓存') #清除按钮 self.clean_button = Button(self.mywindow, text='点击清除', width=10, command=self.clean_file) self.clean_button.grid(row=1, column=1) self.information_text = Label(self.mywindow, text='', width=10) self.information_text.grid(row=2, column=1) def clean_file(self): self.clean_file2(self.path) #这里传的path修改为self.path def clean_file2(self,path): for i in os.listdir(path): file_path = os.path.join(path,i) if os.path.isfile(file_path): try: os.remove(file_path) print(file_path+' Deleting completed') except: print(file_path + ' something wrong!') else: self.clean_file2(file_path) def new_window(): newwindow = tkinter.Tk() mywin = Clean(newwindow,path) #实例化类的时候多传一个path参数进去 mywin.set_window() newwindow.mainloop() new_window()
#python自学渣渣一枚
#文章内容是通过参考网上博客并自学,部分代码可能存在转载(翻阅的太多也忘记从哪转载了)
#如有侵权,请联系我,立马删除~~!