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_())

Python校验文件MD5值的更多相关文章

  1. python 计算文件md5值

    md5是一种常见不可逆加密算法,使用简单,计算速度快,在很多场景下都会用到,比如:给用户上传的文件命名,数据库中保存的用户密码,下载文件后检验文件是否正确等.下面讲解在python中如何使用md5算法 ...

  2. Python计算文件MD5值

    import hashlib def fileMD5(filename): m = hashlib.md5() #md5计算 #m = hashlib.sha1() #sha1计算 #m = hash ...

  3. MD5工具类,提供字符串MD5加密、文件MD5值获取(校验)功能

    MD5工具类,提供字符串MD5加密(校验).文件MD5值获取(校验)功能 : package com.yzu.utils; import java.io.File; import java.io.Fi ...

  4. java计算过G文件md5 值计算

    package io.bigdata; import java.io.File; import java.io.FileInputStream; import java.io.IOException; ...

  5. QT 获取文件MD5值

    /* 方法1 */ QFile theFile(fileNamePath); theFile.open(QIODevice::ReadOnly); QByteArray ba = QCryptogra ...

  6. JAVA中获取文件MD5值的四种方法

    JAVA中获取文件MD5值的四种方法其实都很类似,因为核心都是通过JAVA自带的MessageDigest类来实现.获取文件MD5值主要分为三个步骤,第一步获取文件的byte信息,第二步通过Messa ...

  7. C# 获取文件MD5值的方法

    可用于对比文件是否相同 /// <summary> /// 获取文件MD5值 /// </summary> /// <param name="fileName& ...

  8. 基于js-spark-md5前端js类库,快速获取文件Md5值

    js-spark-md5是歪果仁开发的东西,有点多,但是我们只要一个js文件即可,具体类包我存在自己的oschina上,下载地址:https://git.oschina.net/jianqingwan ...

  9. C#统计目录中文件MD5值

    1. [代码]统计目录中文件MD5值 using System.IO;using System.Security.Cryptography;using System.Collections;using ...

随机推荐

  1. jmetter 安装 建测试计划详细步骤

    更多Jmetter教程 1,去官网下载最新的jmetter版本: http://jmeter.apache.org/download_jmeter.cgi 2,解压下载的jmtter安装包到D:\so ...

  2. MySQL data type

    MySQL数据类型 MySQL中定义数据字段的类型对你数据库的优化是非常重要的. MySQL支持多种类型,大致可以分为三类:数值.日期/时间和字符串(字符)类型. 数值类型 MySQL支持所有标准SQ ...

  3. C语言,链表操作

    #include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include <string ...

  4. CentOS 7 升级 Linux 内核

    一.升级内核 1.更新仓库 yum -y update 2.用 ELRepo 仓库 rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org ...

  5. 8 种常被忽视的 SQL 错误用法

      来源:db匠 yq.aliyun.com/articles/72501 sql语句的执行顺序: FROM <left_table> ON <join_condition> ...

  6. Android 开发 RecyclerView设置间距

    实现步骤 首先要创建一个类继承RecyclerView.ItemDecoration 然后重新这个类的getItemOffsets方法,删除方法里的super.getItemOffsets(outRe ...

  7. Delphi ClientDataSet 主从结构 BUG

    使用ADO控件 .ClientDataSet .增加了从表与主表的关连字段 SheetID,别的设置全为默认.如图1所示 图1 ======= 问题 BUG: 打开主表与从表,先不对主表进行任何操作. ...

  8. 《深入理解java虚拟机》读书笔记——java内存区域和内存溢出异常

    几种内存溢出异常: 堆溢出 原因:创建过多对象,并且GC Roots到对象之间有可达路径. 分两种情况: Memory Leak:无用的对象没有消除引用,导致无用对象堆积.例如<Effictiv ...

  9. 关于新学期Python的一点见解

    首先很高兴选到了Python,之前学习过c语言,不过学的不大好. 我希望此次课程能够教会我们如何运用Python解决生活中的一些小问题,或者可以解决其他学科上的一些问题,当然有关人工智能方面的最好. ...

  10. 使用 nodeJs 开发微信公众号(配置服务器)

    流程如下: 1. 申请微信公众号:企业号.服务号.订阅号(前两个要钱) 2. 配置微信公众号后台 选择基本配置,获得 AppId 和 AppSecret ,点击服务器配置 URL:你服务器地址,不能是 ...