zoukankan      html  css  js  c++  java
  • 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_())
  • 相关阅读:
    什么是基于注解的容器配置?
    一个线程运行时发生异常会怎样?
    Java 中你怎样唤醒一个阻塞的线程?
    为什么 wait, notify 和 notifyAll 这些方法不在 thread 类里面?
    Java 中 notify 和 notifyAll 有什么区别?
    在 Spring MVC 应用程序中使用 WebMvcTest 注释有什么用处?
    java 中有几种方法可以实现一个线程?
    什么是AOP?
    什么是竞争条件?你怎样发现和解决竞争?
    Mybatis 是如何进行分页的?分页插件的原理是什么?
  • 原文地址:https://www.cnblogs.com/roc-fly/p/10103138.html
Copyright © 2011-2022 走看看