首页 > 编程语言 >Python生成文件md5校验值函数

Python生成文件md5校验值函数

时间:2023-02-07 13:32:43浏览次数:35  
标签:Python crazyant md5sum 校验 fpath sample file md5


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,crazyant,md5sum,校验,fpath,sample,file,md5
From: https://blog.51cto.com/peishuai/6042039

相关文章

  • Python 安装
     ​安装Python环境在你开始学习Python之前最重要的是——对,你要安装Python环境。许多初学者会纠结应该选择2.x版本还是3.x版本的问题,在我看来,世界变化的速度在变......
  • Python模块之 urlparse 拆分 url 网址链接
    作用:拆解url网址链接,协议、网络位置、路径等必要操作:py2:>>>pipinstallurllib-ihttp://pypi.douban.com/simple/--trusted-hostpypi.douban.com>>>fro......
  • 【Appium_python】启动app,出现多次打开关闭导致失败问题,driver用单例模式(_new_)进行解
    运用多设备,启动app多次出现打开又关闭问题,查看后是多次对driver进行实例化,就用单例的模式进行解决。单例模式(SingletonPattern)目的就是保证一个类仅有一个实例,每一次执行......
  • Python openpyxl使用教程
    1.安装openpyxl组件pipinstallopenpyxl-ihttps://mirrors.aliyun.com/pypi/simple/新建Excel#coding=utf-8fromopenpyxlimportWorkbookwb=Workbook()#......
  • python打印中文
    python3中将json.dumps()结果显示为中文解决json.dumps()这个方法是没有encoding这个参数的,要想将默认的ascii字符改为中文,应该将ensure_asciii设为Falseprint(json.du......
  • 奇偶、循环冗余、海明校验码
    奇偶效验码:能检查奇数个为错,不能纠错。例如:10011010奇效验不通过 偶校验(偶数个1)通过.循环冗余校验码:能检戳不能纠错;采用模2运算。例如:信息码101001二项式:x^......
  • Python修改柱状图边缘柱子与图边界的距离
      本文介绍基于Python中matplotlib.pyplot模块,修改柱状图、条形图最两侧的柱子与图像边缘之间距离的方法。  最近,绘制了一个水平的柱状图,但是发现图的上、下边距(不是......
  • python_sha256加密
    Python数据加解密技术_SHA256算法importhashlib#1、待加密的字符串str='helloworld'#2、实例化一个sha256对象sha256=hashlib.sha256()#3、调用update方法......
  • [java] JSON格式校验
    对JSON字符串进行格式校验,不依赖于第三方包packagecom.iaiai.test;importjava.text.CharacterIterator;importjava.text.StringCharacterIterator......
  • mac m2编译 python3.7.6
    下载https://www.python.org/ftp/python/3.7.16/Python-3.7.16.tgz编译tar-zxvfPython-3.7.16.tgzcdPython-3.7.16.tgz./configure--prefix=/usr/local/python3.7......