文件粉碎工具:适用于粉碎密码文件和机密的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文件粉碎的资料请关注代码网其它相关文章!
发表评论