电脑上文档文件被流氓软件加密,文档打开后乱码,听说通过重命名将文件类型更换为*.js然后再更成原来的文件类型后缀可以实现解密,于是用tkinter写了一个简单的GUI程序方便此操作。既可以单独对一个文件,也可以对文件夹下的文件(不递归子文件夹)实现此操作。
代码如下:
代码语言:python代码运行次数:0复制# -* - coding:utf-8 -*-
import os
import tkinter
import shutil
from tkinter import filedialog
from datetime import datetime
backupPath='D:/backup'
if not os.path.exists(backupPath):
os.mkdir(backupPath)
root=tkinter.Tk()
root.title("文件备份")
dirBtn=tkinter.Button(root,text='打开目录')
dirBtn.grid(row=0,column=0)
dirLabel=tkinter.Label(root,text="你选择的目录")
dirLabel.grid(row=0,column=1)
okBtn1=tkinter.Button(root,text="OK")
okBtn1.grid(row=0,column=2)
fileBtn=tkinter.Button(root,text='打开文件')
fileBtn.grid(row=1,column=0)
fileLabel=tkinter.Label(root,text="你选择的文件")
fileLabel.grid(row=1,column=1)
okBtn2=tkinter.Button(root,text="OK")
okBtn2.grid(row=1,column=2)
tkinter.Label(root,text="为防止出错导致文件永久丢失或损坏,使用前请做好备份(D:/backup目录下保存有副本)").grid(row=2,columnspan=2)
tkinter.Label(root,text="打开目录只能处理直接位于该目录下的文件,对子目录不起作用").grid(row=3,columnspan=2)
global filedialog
global dirPath
global filePath
def openDirDialog(e):
path=filedialog.askdirectory()
dirLabel['text']=path
global dirPath
dirPath=path
print(path)
def openFileDialog(e):
dialog=filedialog.askopenfile()
if not dialog:
return
path=dialog.name
fileLabel['text']=path
global filePath
filePath=path
print(path)
def souDir(e):
global dirPath
path=dirPath
name=os.path.basename(path)
backup=os.path.join(backupPath,name)
if os.path.exists(backup):
shutil.rmtree(backup)
shutil.copytree(path,backup)
files=os.listdir(path)
for i in files:
file=os.path.join(path,i)
if(os.path.isfile(file)):
p,ext=os.path.splitext(file)
if(ext!=''):
os.rename(file,p ".js")
os.rename(p '.js',p ext)
def souFile(e):
global filePath
path=filePath
name=os.path.basename(path)
#now=datetime.now()
#name=name '_' now.strftime('%Y-%m-%d-%H-%M-%S')
backUp=os.path.join(backupPath,name)
shutil.copyfile(path,backUp)
p,ext=os.path.splitext(path)
if(ext!=''):
os.rename(path,p ".js")
os.rename(p '.js',p ext)
dirBtn.bind('<Button-1>',openDirDialog)
okBtn1.bind('<Button-1>',souDir)
fileBtn.bind('<Button-1>',openFileDialog)
okBtn2.bind('<Button-1>',souFile)
root.mainloop()