運行效果
# -*- coding: utf-8 -*-
import hashlib #導入hashlib模塊
import tkinter
import tkinter.messagebox
import tkinter.filedialog
from tkinter import *
def hash(file_path,Bytes=1024):
md5_1 = hashlib.md5() #創建一個md5算法對象
with open(file_path,'rb') as f: #打開一個文件,必須是'rb'模式打開
while 1:
data =f.read(Bytes) #由於是一個文件,每次只讀取固定字節
if data: #當讀取內容不爲空時對讀取內容進行update
md5_1.update(data)
else: #當整個文件讀完之後停止update
break
ret = md5_1.hexdigest() #獲取這個文件的MD5值
return ret
#print(hash(r'E:/lujianfeiGitWork/sae/1/json/mnb/apk/plugin1.apk'))
def clickbrowser():
filenames = tkinter.filedialog.askopenfilenames()
if len(filenames) != 0:
path.set(filenames[0])
pass
def clickfun(file_path):
if file_path == "":
tkinter.messagebox.showinfo(title='提示', message='請輸入文件路徑')
return
output.set(hash(file_path))
pass
top = tkinter.Tk()
top.title("文件 hash 值計算")
path = StringVar(top, value='')
output = StringVar(top, value='')
label = tkinter.Label(top, text = '輸入文件路徑:')
inputEntry = tkinter.Entry(top, width = 50, textvariable = path)
btBrowser = tkinter.Button(top, text ="瀏覽", command = lambda:clickbrowser())
btClick = tkinter.Button(top, text ="計算文件 hash", command = lambda:clickfun(inputEntry.get()))
olabel = tkinter.Label(top, text = '輸出 hash:')
outputEntry = tkinter.Entry(top, width = 50, textvariable = output)
label.grid(row=0,column=0)
inputEntry.grid(row=0,column=1)
btBrowser.grid(row=0,column=2)
olabel.grid(row=1,column=0)
outputEntry.grid(row=1,column=1)
btClick.grid(row=1,column=2)
col_count, row_count = top.grid_size()
# 進入消息循環
top.mainloop()