利用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获取beautifulphoto随机某图片代码实例
Dec 18 Python
在Python中利用Into包整洁地进行数据迁移的教程
Mar 30 Python
详解python里使用正则表达式的全匹配功能
Oct 19 Python
Python get获取页面cookie代码实例
Sep 12 Python
python学生信息管理系统(完整版)
Apr 05 Python
PyQt5 窗口切换与自定义对话框的实例
Jun 20 Python
Python学习笔记之函数的参数和返回值的使用
Nov 20 Python
Python Des加密解密如何实现软件注册码机器码
Jan 08 Python
pytorch 实现将自己的图片数据处理成可以训练的图片类型
Jan 08 Python
Python求区间正整数内所有素数之和的方法实例
Oct 13 Python
如何用PyPy让你的Python代码运行得更快
Dec 02 Python
Python实现8种常用抽样方法
Jun 27 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访问MYSQL数据库封装类(附函数说明)
2010/12/04 PHP
PHP设计模式 注册表模式
2012/02/05 PHP
thinkphp四种url访问方式详解
2014/11/28 PHP
PHP+MySQL实现的简单投票系统实例
2016/02/24 PHP
使用Zookeeper分布式部署PHP应用程序
2019/03/15 PHP
laravel实现上传图片,并且制作缩略图,按照日期存放的代码
2019/10/16 PHP
JQuery Easyui Tree的oncheck事件实现代码
2010/05/28 Javascript
通过jQuery源码学习javascript(一)
2012/12/27 Javascript
js实现幻灯片效果(基于jquery插件)
2013/11/05 Javascript
jquery div拖动效果示例代码
2013/12/08 Javascript
让jQuery与其他JavaScript库并存避免冲突的方法
2013/12/23 Javascript
jquery 按键盘上的enter事件
2014/05/11 Javascript
jquery使用hide方法隐藏指定id的元素
2015/03/30 Javascript
jQuery实现的倒计时效果实例小结
2016/04/16 Javascript
Vue cli构建及项目打包以及出现的问题解决
2018/08/27 Javascript
详解webpack之图片引入-增强的file-loader:url-loader
2018/10/08 Javascript
微信小程序绘制图片发送朋友圈
2019/07/25 Javascript
微信小程序使用蓝牙小插件
2019/09/23 Javascript
Node.js API详解之 Error模块用法实例分析
2020/05/14 Javascript
javaScript代码飘红报错看不懂?读完这篇文章再试试
2020/08/19 Javascript
Python中实现对Timestamp和Datetime及UTC时间之间的转换
2015/04/08 Python
python批量查询、汉字去重处理CSV文件
2018/05/31 Python
提升python处理速度原理及方法实例
2019/12/25 Python
QML实现钟表效果
2020/06/02 Python
pycharm导入源码的具体步骤
2020/08/04 Python
使用HTML5的Notification API制作web通知的教程
2015/05/08 HTML / CSS
英国最大的电子产品和家电零售企业:Currys PC World
2016/09/24 全球购物
澳大利亚首个在线预订旅游网站:Wotif
2017/07/19 全球购物
英国最大的在线时尚眼镜店:Eyewearbrands
2019/03/12 全球购物
车工岗位职责
2013/11/26 职场文书
电子商务专业个人的自我评价
2013/12/19 职场文书
工作失误检讨书
2015/01/26 职场文书
葬礼主持词
2015/07/02 职场文书
2015-2016年小学教导工作总结
2015/07/21 职场文书
开学典礼致辞
2015/07/29 职场文书
MySQL数据库事务的四大特性
2022/04/20 MySQL