使用python制作一款文件粉碎工具
文件粉碎工具:适用于粉碎密码文件和机密的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="使用python制作一款文件粉碎工具", # 设置窗口的标题
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.Labjsel(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 Dele编程客栈te_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 http://www.devze.comvar_Line.get() == '执行中...':
pass
else:
text['state'] = 'normal' # 【可用】 禁用 disabled 可用 normal
text.delete("0.0", 'en编程客栈d') # 删除内容
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文件粉碎的资料请关注编程客栈(www.devze.com)其它相关文章!
加载中,请稍侯......
精彩评论