使用python制作一款文件粉碎工具
作者:小木_.
这篇文章主要为大家详细介绍了如何使用python制作一款文件粉碎工具,能够有效粉碎密码文件和机密Excel表格等,感兴趣的小伙伴可以了解一下
文件粉碎工具:适用于粉碎密码文件和机密的escel表格等等,主要作用就是防止 别人用数据恢复大师把你刚删除的机密的文件恢复过来,造成密码丢失等。
程序原理:修改内部数据,使用open函数 强制替换填充数据并保存,然后进行删除。
基本无法恢复,除非某软件有自动备份功能。
废话不多说,看图 上代码
完整代码:
""" 安装 ttkbootstrap 模块 pip install ttkbootstrap 安装 windnd 模块 pip install windnd 安装 shutil 模块 pip install shutilwhich """ import ttkbootstrap as ttk from ttkbootstrap.constants import * import os import windnd from threading import Thread import shutil # 实例化创建应用程序窗口 root = ttk.Window( title="Shredding Documents", # 设置窗口的标题 themename="litera", # 设置主题 size=(612,288), # 窗口的大小 position=(612,288), # 窗口所在的位置 minsize=(612,288), # 窗口的最小宽高 maxsize=(612,288), # 窗口的最大宽高 resizable=None, # 设置窗口是否可以更改大小 alpha=1.0, # 设置窗口的透明度(0.0完全透明) ) root.iconbitmap(f"picture.ico") # 标签 ttk.Label(root, text="将文件推拽到此窗口内↓↓↓ 提示:请不要放系统文件和盘符 【粉碎前需关闭文件或程序,否则会异常】",bootstyle=DANGER).place(x=14,y=20) ttk.Label(root, text="作者:小木_.\t邮箱:QHJ_WZ@163.com",bootstyle=SECONDARY).place(x=14,y=260) # 文件夹数量展示 var_Display_volume = ttk.StringVar() Display_volume = ttk.Label(root, textvariable=var_Display_volume).place(x=14, y=180) var_Display_volume.set('文件数量:0\t文件夹数量:0\t总数据:0\n执行成功:0\t异常文件:0') # 线程检测 var_Line = ttk.StringVar() Line = ttk.Label(root, textvariable=var_Line).place(x=534, y=260) var_Line.set('等待执行...') # 窗口展示内容 text = ttk.Text(root,width=84, heigh=6) text.pack(padx=0,pady=50) text.insert('insert','将想要粉碎的文件拖进此窗口内!!!') # 插入内容 text['state'] = 'disabled' # 【禁用】 disabled 可用 normal # 文件 -- 主 files_A = [] # 文件夹 folder_A = [] # 临时文件夹 -- 主 folder_B = [] # 异常文件 G = [] # 拖拽触发DEF def Dragoon(files): global files_A,folder_A,folder_B,G # 初始化文件 files_A = [] # 初始化文件夹 folder_A = [] # 初始化临时文件夹 folder_B = [] # 初始化异常文件 G = [] text['state'] = 'normal' # 【可用】 禁用 disabled 可用 normal text.delete("0.0", 'end') # 删除全部内容 # 将拖拽的文件循环便利出来并解码 存储到列表内 for a in files: a = a.decode('gbk') # 解码 if os.path.isfile(a) == False: # 检测是否是文件 是文件True 否则False folder_A = folder_A + [a] # 将文件夹路径存储起来 else: text.insert('insert', str(a).replace('\\','/')+"\n") # 打印出来文件路径 files_A = files_A + [str(a).replace('\\','/')] # 存储文件路径 # 循环遍历出文件夹内的所有文件和文件夹 for _a_ in folder_A: for a in os.walk(str(_a_).replace('\\','/')): # 找出所有的文件夹内的文件和文件夹 # 文件夹 folder_B = [a[0].replace('\\', '/')] + folder_B # 存储文件夹路径 顺序不可错 for aa in a[2]: # 文件路径 text.insert('insert', os.path.join(a[0], aa).replace('\\', '/') + "\n") # 将文件夹路径和文件合并在一起 成为文件路径 # 文件 files_A = files_A + [os.path.join(a[0], aa).replace('\\', '/')] # 存储文件路径 # 将保存的文件夹路径遍历打印出来 for a in folder_B: text.insert('insert', a+'\n') # 文件夹路径 # 文件数量和文件夹数量 var_Display_volume.set(f'文件数量:{len(files_A)}\t文件夹数量:{len(folder_B)}\t总数据:{len(files_A)+len(folder_B)}\n执行成功:0\t异常文件:0') text['state'] = 'disabled' # 【禁用】 禁用disabled 可用normal # 删除文件 def Delete_File(FILE): global G if os.path.isfile(FILE) == True: # 判断是否存在文件 try: W_file = open(FILE, 'w') W_file.write('1') W_file.close() os.remove(FILE) # 删除文件 text['state'] = 'normal' # 【可用】 禁用 disabled 可用 normal text.insert('insert', '· 处理完成 >>' + FILE + '\n') # 插入内容 text.see(ttk.END) # 光标跟随着插入的内容移动 text['state'] = 'disabled' # 【禁用】 disabled 可用 normal except: try: os.remove(FILE) # 删除文件 except: G = G + ['【异常未处理】 >>'+FILE] # 异常文件 else: G = G + ['【异常未处理】 >>'+FILE] # 异常文件 # 删除文件夹 def Delete_folders(FILE): global G if os.path.isfile(FILE) == False: # 判断是否存在文件 if os.path.exists(FILE) == True: try: os.rmdir(FILE) # 删除一个空目录 text['state'] = 'normal' # 【可用】 禁用 disabled 可用 normal text.insert('insert', '· 处理完成 >>'+FILE+'\n') # 插入内容 text.see(ttk.END) # 光标跟随着插入的内容移动 text['state'] = 'disabled' # 【禁用】 disabled 可用 normal except: G = G + ['【异常未处理】 >>'+FILE] # 异常文件 else: G = G + ['【异常未处理】 >>'+FILE] # 异常文件 else: G = G + ['【异常未处理】 >>'+FILE] # 异常文件 # def执行 - 主 def DEFG(): def T(): if var_Line.get() == '执行中...': pass else: text['state'] = 'normal' # 【可用】 禁用 disabled 可用 normal text.delete("0.0", 'end') # 删除内容 text['state'] = 'disabled' # 【禁用】 disabled 可用 normal var_Line.set('执行中...') # 删除文件 for a in files_A: # 删除文件 Delete_File(a) # 删除文件夹 for a in folder_B: Delete_folders(a) # 删除文件夹 for A in G: text['state'] = 'normal' # 【可用】 禁用 disabled 可用 normal text.insert('insert', f'{A}\n') # 插入内容 text.see(ttk.END) # 光标跟随着插入的内容移动 text['state'] = 'disabled' # 【禁用】 disabled 可用 normal var_Display_volume.set(f'文件数量:{len(files_A)}\t文件夹数量:{len(folder_B)}\t总数据:{len(files_A)+len(folder_B)}\n执行成功:{len(files_A)+len(folder_B)-len(G)}\t异常文件:{len(G)}') var_Line.set('等待执行...') Thread(target=T).start() # 按钮 ttk.Button(text="一键粉碎",width=20,command=DEFG).pack() # 拖拽模块 windnd.hook_dropfiles(root, func=Dragoon) if __name__ == '__main__': root.mainloop()
以上就是使用python制作一款文件粉碎工具的详细内容,更多关于python文件粉碎的资料请关注脚本之家其它相关文章!