利用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 相关文章推荐
Unicode和Python的中文处理
Mar 19 Python
python脚本爬取字体文件的实现方法
Apr 29 Python
用Python实现随机森林算法的示例
Aug 24 Python
Python模拟三级菜单效果
Sep 11 Python
python  文件的基本操作 菜中菜功能的实例代码
Jul 17 Python
Python3 pandas 操作列表实例详解
Sep 23 Python
解决Python二维数组赋值问题
Nov 28 Python
如何在windows下安装Pycham2020软件(方法步骤详解)
May 03 Python
详解python命令提示符窗口下如何运行python脚本
Sep 11 Python
python实现文件分片上传的接口自动化
Nov 19 Python
PyTorch梯度裁剪避免训练loss nan的操作
May 24 Python
详解Python requests模块
Jun 21 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的知识
2006/11/17 PHP
php中hashtable实现示例分享
2014/02/13 PHP
PHP改进计算字符串相似度的函数similar_text()、levenshtein()
2014/10/27 PHP
PHP类的反射用法实例
2014/11/03 PHP
PHP数组函数array_multisort()用法实例分析
2016/04/02 PHP
php写app接口并返回json数据的实例(分享)
2017/05/20 PHP
Prototype使用指南之hash.js
2007/01/10 Javascript
JavaScript修改css样式style
2008/04/15 Javascript
jQuery的12招常用技巧分享
2011/08/08 Javascript
location.href用法总结(最主要的)
2013/12/27 Javascript
原生js和jquery中有关透明度设置的相关问题
2014/01/08 Javascript
jQuery学习笔记之 Ajax操作篇(一) - 数据加载
2014/06/23 Javascript
JavaScript正则表达式之multiline属性的应用
2015/06/16 Javascript
基于JavaScript实现移动端TAB触屏切换效果
2015/10/20 Javascript
详解JS中Array对象扩展与String对象扩展
2016/01/07 Javascript
jQuery 移动端artEditor富文本编辑器
2016/01/11 Javascript
浅谈JavaScript 执行环境、作用域及垃圾回收
2016/05/31 Javascript
基于JS代码实现图片在页面中旋转效果
2016/06/16 Javascript
JS实现向iframe中表单传值的方法
2017/03/24 Javascript
jQuery实现图片切换效果
2020/10/19 jQuery
[46:04]Liquid vs VP Supermajor决赛 BO 第四场 6.10
2018/07/05 DOTA
操作Windows注册表的简单的Python程序制作教程
2015/04/07 Python
python回调函数用法实例分析
2015/05/09 Python
浅谈python的深浅拷贝以及fromkeys的用法
2019/03/08 Python
python sort、sort_index方法代码实例
2019/03/28 Python
使用Pyinstaller转换.py文件为.exe可执行程序过程详解
2019/08/06 Python
python如何实现不用装饰器实现登陆器小程序
2019/12/14 Python
使用phonegap获取位置信息的实现方法
2017/03/31 HTML / CSS
华润集团网上药店:健一网
2016/09/19 全球购物
《颐和园》教学反思
2014/02/26 职场文书
三好学生个人先进事迹材料
2014/05/17 职场文书
环境监测与治理技术专业求职信
2014/07/06 职场文书
小学红领巾广播稿(3篇)
2014/09/13 职场文书
建筑工程材料员岗位职责
2015/04/11 职场文书
python 提取html文本的方法
2021/05/20 Python
Python中OpenCV实现简单车牌字符切割
2021/06/11 Python