1. 程式人生 > >Python校驗檔案MD5值

Python校驗檔案MD5值

import hashlib
import os


def GetFileMd5(filename):
    if not os.path.isfile(filename):
        return
    myHash = hashlib.md5()
    f = open(filename,'rb')
    while True:
        b = f.read(8096)
        if not b :
            break
        myHash.update(b)
    f.close()
    return myHash.hexdigest()

print(GetFileMd5('/Users/binyun007/Desktop/xxx')) #檔案路徑

 

視窗模式, 需要pip安裝PyQt5

import sys
import os
import hashlib
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton,  QMessageBox
from PyQt5.Qt import QLineEdit

class App(QWidget):

    def __init__(self):
        super().__init__()
        self.title = 'MD5校驗'
        self.left = 800
        self.top 
= 600 self.width = 320 self.height = 200 self.initUI() def initUI(self): self.setWindowTitle(self.title) self.setGeometry(self.left, self.top, self.width, self.height) # create textbox self.textbox = QLineEdit(self) # self.textbox.setText('/Users/binyun007/Desktop/') #設定文字框的預設值
self.textbox.setText(FileRecord.readpath()) #讀取文字框的預設值 self.textbox.move(20, 20) self.textbox.resize(280, 40) # Create a button in the window self.button = QPushButton('校驗', self) self.button.move(20, 80) # connect button to function on_click self.button.clicked.connect(self.on_click) self.show() def on_click(self): textboxValue = self.textbox.text() md5 = GetFileMd5(textboxValue) QMessageBox.question(self, "Message", 'MD5:' + md5, QMessageBox.Ok,QMessageBox.Ok) """列印完畢之後設定文字框預設值為上一次使用後的""" FileRecord.writpath(textboxValue) #self.textbox.setText(textboxValue) # #儲存、讀取MD5記錄 class FileRecord(): #儲存 def writpath(filepath): with open('md5.txt','w') as f: f.write(filepath) #讀取 def readpath(): try: with open('md5.txt','r') as f: record = f.readline() return record #如果檔案不存在建立 except FileNotFoundError: with open('md5.txt','w') as f: return #校驗MD5值 def GetFileMd5(filename): if not os.path.isfile(filename): return myHash = hashlib.md5() f = open(filename,'rb') while True: b = f.read(8096) if not b : break myHash.update(b) f.close() return myHash.hexdigest() if __name__ == '__main__': app = QApplication(sys.argv) ex = App() app.exit(app.exec_())