利用Python生成文件md5校验值函数的方法


Posted in Python onJanuary 10, 2017

前言

在linux有个命令叫做md5sum,能生成文件的md5值,一般情况下都会将结果记录到一个文件中用于校验使用,比如会这样使用:

[crazyant@localhost PythonMd5]$ more sample_file 
www.crazyant.net
www.51projob.com
[crazyant@localhost PythonMd5]$ md5sum sample_file > sample_file.md5file
[crazyant@localhost PythonMd5]$ more sample_file.md5file 
311d384505e3622ccf85d88930e2b0a0 sample_file
[crazyant@localhost PythonMd5]$ md5sum -c sample_file.md5file 
sample_file: OK

其中md5sum -c用于检测生成的md5值是否正确。

使用python生成文件md5值以及生成和md5sum结果一样的结果文件

python可以使用hashlib的md5模块对文件内容进行md5校验码生成,如果要生成和md5sum一样的结果文件,只需要将MD5结果值和文件名输出一行,中间有两个空格输出即可。

测试代码:

# -*- encoding:utf-8 -*-
from hashlib import md5
import os
 
def generate_file_md5value(fpath):
 '''以文件路径作为参数,返回对文件md5后的值
 '''
 m = md5()
 # 需要使用二进制格式读取文件内容
 a_file = open(fpath, 'rb') 
 m.update(a_file.read())
 a_file.close()
 return m.hexdigest()
 
def generate_file_md5sumFile(fpath):
 fname = os.path.basename(fpath)
 fpath_md5 = "%s.md5" % fpath
 fout = open(fpath_md5, "w")
 fout.write("%s %s\n" % (generate_file_md5value(fpath), fname.strip()))
 print "generate success, fpath:%s" % fpath_md5
 fout.flush()
 fout.close()
 
if __name__ == "__main__":
 fpath = "/home/users/workbench/PythonMd5/sample_file"
 # 测试一:以文件路径作为参数,获得md5后的字符串
 print generate_file_md5value(fpath)
 
 # 测试二:生成和linux命令:md5sum同样结果的.md5文件
 generate_file_md5sumFile(fpath)

运行结果:

[crazyant@localhost PythonMd5]$ python generateMd5file.py
311d384505e3622ccf85d88930e2b0a0
generate success, fpath:/home/crazyant/workbench/PythonMd5/sample_file.md5
[crazyant@localhost PythonMd5]$ md5sum -c sample_file.md5
sample_file: OK

注意点

在windows下开发的代码,如果直接提交到linux运行,经常因为windows下的换行符是\r\n而linux是\n的缘故导致代码执行失败,一般情况下都要进行一下转换。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。谢谢大家对三水点靠木的支持。

Python 相关文章推荐
Python采用raw_input读取输入值的方法
Aug 18 Python
windows下安装python的C扩展编译环境(解决Unable to find vcvarsall.bat)
Feb 21 Python
selenium+python实现自动登录脚本
Apr 22 Python
Python自定义函数实现求两个数最大公约数、最小公倍数示例
May 21 Python
Python将字符串常量转化为变量方法总结
Mar 17 Python
Python使用Pickle模块进行数据保存和读取的讲解
Apr 09 Python
Python实现密钥密码(加解密)实例详解
Apr 26 Python
python给视频添加背景音乐并改变音量的具体方法
Jul 19 Python
一文读懂Python 枚举
Aug 25 Python
Python图像读写方法对比
Nov 16 Python
Python 数据可视化之Seaborn详解
Nov 02 Python
Python first-order-model实现让照片动起来
Jun 25 Python
python中执行shell的两种方法总结
Jan 10 #Python
Python用list或dict字段模式读取文件的方法
Jan 10 #Python
python导入时小括号大作用
Jan 10 #Python
python实现应用程序在右键菜单中添加打开方式功能
Jan 09 #Python
ubuntu系统下 python链接mysql数据库的方法
Jan 09 #Python
利用Python中unittest实现简单的单元测试实例详解
Jan 09 #Python
Python中的sort()方法使用基础教程
Jan 08 #Python
You might like
php学习之function的用法
2012/07/14 PHP
PHP制作3D扇形统计图以及对图片进行缩放操作实例
2014/10/23 PHP
通过chrome浏览器控制台(Console)进行PHP Debug的方法
2016/10/19 PHP
Laravel重定向,a链接跳转,控制器跳转示例
2019/10/22 PHP
关于PHP中interface的用处详解
2020/07/26 PHP
JavaScript异步调用定时方法并停止该方法实现代码
2012/03/16 Javascript
jQuery语法高亮插件支持各种程序源代码语法着色加亮
2013/04/27 Javascript
javascript实现的闭包简单实例
2015/07/17 Javascript
AngularJS实现表单手动验证和表单自动验证
2015/12/09 Javascript
jQuery.Callbacks()回调函数队列用法详解
2016/06/14 Javascript
Javascript获取随机数的实现方法
2016/06/22 Javascript
Javascript中判断一个值是否为undefined的方法详解
2016/09/28 Javascript
javascript 动态样式添加的简单实现
2016/10/11 Javascript
React Native实现进度条弹框的示例代码
2017/07/17 Javascript
详解使用VUE搭建后台管理系统(vue-cli更新至3.0)
2018/08/22 Javascript
对vue中v-on绑定自定事件的实例讲解
2018/09/06 Javascript
详解vuex状态管理模式
2018/11/01 Javascript
[01:11:28]DOTA2-DPC中国联赛定级赛 RNG vs Phoenix BO3第一场 1月8日
2021/03/11 DOTA
python实现本地图片转存并重命名的示例代码
2018/10/27 Python
Python用61行代码实现图片像素化的示例代码
2018/12/10 Python
python 删除字符串中连续多个空格并保留一个的方法
2018/12/22 Python
Django框架创建mysql连接与使用示例
2019/07/29 Python
python框架django项目部署相关知识详解
2019/11/04 Python
python 统计文件中的字符串数目示例
2019/12/24 Python
python安装cx_Oracle和wxPython的方法
2020/09/14 Python
Python常用扩展插件使用教程解析
2020/11/02 Python
英国历史最悠久的DJ设备供应商:DJ Finance、DJ Warehouse、The DJ Shop
2019/09/04 全球购物
如何做好总经理助理
2013/11/12 职场文书
高中教师先进事迹材料
2014/08/22 职场文书
学校副校长四风对照检查材料整改措施
2014/09/25 职场文书
天下第一关导游词
2015/02/06 职场文书
导游词范文之颐和园/重庆/云台山
2019/09/10 职场文书
MySQL分库分表详情
2021/09/25 MySQL
Tomcat 与 maven 的安装与使用教程
2022/06/16 Servers
js前端面试常见浏览器缓存强缓存及协商缓存实例
2022/06/21 Javascript
Win11自动黑屏怎么办 Win11自动黑屏设置教程
2022/07/15 数码科技