利用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的print用法示例
Feb 11 Python
python多线程抓取天涯帖子内容示例
Apr 03 Python
python对url格式解析的方法
May 13 Python
Python环境下安装使用异步任务队列包Celery的基础教程
May 07 Python
Python实现快速计算词频功能示例
Jun 25 Python
python实现指定字符串补全空格、前面填充0的方法
Nov 16 Python
淘宝秒杀python脚本 扫码登录版
Sep 19 Python
python实现简单的购物程序代码实例
Mar 03 Python
python实现梯度法 python最速下降法
Mar 24 Python
Python3开发环境搭建详细教程
Jun 18 Python
Python中的流程控制详解
Feb 18 Python
Python Django模型详解
Oct 05 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如何透过ODBC来存取数据库
2006/10/09 PHP
php实现的Cookies操作类实例
2014/09/24 PHP
PHP实现的DES加密解密封装类完整实例
2017/04/29 PHP
PHP PDO和消息队列的个人理解与应用实例分析
2019/11/25 PHP
jqPlot Option配置对象详解
2009/07/25 Javascript
De facto standard 世界上不可思议的事实标准
2010/08/29 Javascript
jquery 延迟执行实例介绍
2013/08/20 Javascript
JS的Document属性和方法小结
2013/09/17 Javascript
jquery下拉select控件操作方法分享(jquery操作select)
2014/03/25 Javascript
jquery 自定义容器下雨效果可将下雨图标改为其他
2014/04/23 Javascript
textarea焦点的用法实现获取焦点清空失去焦点提示效果
2014/05/19 Javascript
jQueryUI中的datepicker使用方法详解
2016/05/25 Javascript
AngularJS 路由详解和简单实例
2016/07/28 Javascript
JS实现的tab切换选项卡效果示例
2017/02/28 Javascript
ReactJS实现表单的单选多选和反选的示例
2017/10/13 Javascript
Angular数据绑定机制原理
2018/04/17 Javascript
vue悬浮可拖拽悬浮按钮的实例代码
2019/08/20 Javascript
JS实现动态星空背景效果
2019/11/01 Javascript
python制作企业邮箱的爆破脚本
2016/10/05 Python
python中plot实现即时数据动态显示方法
2018/06/22 Python
python编写简易聊天室实现局域网内聊天功能
2018/07/28 Python
Python使用numpy模块实现矩阵和列表的连接操作方法
2019/06/26 Python
TensorFlow实现从txt文件读取数据
2020/02/05 Python
Python实现初始化不同的变量类型为空值
2020/06/02 Python
DRF使用simple JWT身份验证的实现
2021/01/14 Python
使用HTML5 Canvas API绘制弧线的教程
2016/03/22 HTML / CSS
伦敦的高级牛仔布专家:Trilogy
2018/08/06 全球购物
卫生安全检查制度
2014/02/04 职场文书
实习生岗位职责
2014/04/12 职场文书
部门2015年度工作总结
2015/04/29 职场文书
2019通用版导游词范本!
2019/08/07 职场文书
python某漫画app逆向
2021/03/31 Python
基于python的matplotlib制作双Y轴图
2021/04/20 Python
日本官方排名前10的动漫,名侦探柯南上榜,第一是一部创造历史的动漫
2022/03/18 日漫
排查并解决Oracle sysaux表空间异常增长
2022/04/20 Oracle
Java获取字符串编码格式实现思路
2022/09/23 Java/Android