8288分类目录 8288分类目录 8288分类目录
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

python获取文件md5

来源:本站原创 浏览:63次 时间:2022-08-31

每个公司对上线的业务要求都不一样,但对一些重要的文件,在线上覆盖前要全面检查文件的md5,所以这就要求获得更新前文件的md5值,然后跟研发提供的做比较,如果一致才更新,如果发现不对,就停止更新,当然逻辑都写在脚本里就可以了,因为每个公司线上服的更新逻辑都不一样,这块内容我们不做深入探讨,我们今天主要看看如何获得研发的更新文件的md5值,基本思路是这样,首先需要定义一个函数获得研发给的每个文件绝对路径,然后再定义一个函数用来返回md5值,在主函数中对每个文件调用生成md5值得函数得到md5值然后写入文件中,脚本思路就介绍到这里,我们来看代码:

#!/usr/bin/python  


import sys  

import os

import hashlib  

      

if len(sys.argv) < 2:

    print 'this script need a arv'

    sys.exit(0)


if not os.path.exists(sys.argv[1]) or not os.path.isdir(sys.argv[1]):

     print 'it is not exists or not a dir'

     sys.exit(1)


def getmd5(filename):  

    m = hashlib.md5()  

    mfile = open(filename, 'rb')

    m.update(mfile.read())

    mfile.close()

    md5value = m.hexdigest()  

    return (md5value+"\t"+ filename)  

         

def all_files(root):

    flist = []

    for path, subdirs, files in os.walk(root):

        for f in files:

            flist.append(os.path.join(path, f))

    return flist


if __name__ == '__main__':

   outfile = open('md5file.txt', 'a+')

   flist = all_files(sys.argv[1])

   for fi in flist:

       res = getmd5(fi)

       outfile.write(res + '\n')

   outfile.close()


脚本解释,最前开始导入需要的模块,之前python还单独有个md5模块,现在基本不用了,都用hashlib了,这个功能更为强大,先定义了一个getmd5()的函数,接收一个文件当做参数,hashlib.md5()生成hash对象,然后调用update()方法将字符串计算出md5值,接下来定义了all_files()函数,这个函数接收一个目录,然后得到文件的绝对路径,加入到列表中,返回。

在主函数中,打开一个文件md5file.txt来存储获得的文件名和对应的md5值,循环flist列表,将文件传入getmd5()函数,获得文件和md5数据,写入文件,最后关闭文件,这篇就到这里


  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net