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