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 = 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