首页 > 代码库 > 利用os、hash模块生成目录下所有文件的md5
利用os、hash模块生成目录下所有文件的md5
hashlib用于对字符串或者文件进行加密。
使用方法1:
hashlib.md5(‘str‘).hexdigest()
使用MD5对str进行加密,使用hexdigest(),16进制的方式打印
使用方法2:
md5 = hashlib.md5()
md5.update(‘hello‘)
如果第一次执行update,那么就是对hello这个字符串进行MD5加密(注意,这里是累加,如果多次update,那么求得是累加的md5值)
md5.hexdigest()
把md5对象保存的str,以16进制进行显示
os.walk(path)迭代一个路径下的文件,默认返回三个参数的元祖
(‘相对路径‘,[路径下的目录],[路径下的文件名])
第一个元素为str,后面两个元素为list
注意:os.walk,是会对路径下的目录进行递归的。
对目录下的所有文件生成md5值,功能类似于: find /path -type f -exec md5sum {} \;
1 #!/usr/bin/env python 2 3 import os 4 import sys 5 import hashlib 6 7 try: 8 dirpath = sys.argv[1] 9 except IndexError as e: 10 sys.exit(‘need one dirctory‘) 11 if os.path.isfile(dirpath): 12 sys.exit(‘Please input a directory‘) 13 14 pathobj = os.walk(dirpath) 15 16 def md5sum(f): 17 m = hashlib.md5() 18 with open(f) as fd: 19 while True: 20 data = http://www.mamicode.com/fd.read(4096) #每次读取一部分,避免因为文件过大,造成对内存的压力 21 if data: 22 m.update(data) 23 else: 24 break 25 return m.hexdigest() 26 27 for roots,dirs,files in pathobj: 28 for file in files: 29 filename = os.path.join(roots,file) 30 md5 = md5sum(filename) 31 print md5,filename
利用os、hash模块生成目录下所有文件的md5
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。