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 {} \;
#!/usr/bin/env python import os
import sys
import hashlib try:
dirpath = sys.argv[1]
except IndexError as e:
sys.exit('need one dirctory')
if os.path.isfile(dirpath):
sys.exit('Please input a directory') pathobj = os.walk(dirpath) def md5sum(f):
m = hashlib.md5()
with open(f) as fd:
while True:
data = fd.read(4096) #每次读取一部分,避免因为文件过大,造成对内存的压力
if data:
m.update(data)
else:
break
return m.hexdigest() for roots,dirs,files in pathobj:
for file in files:
filename = os.path.join(roots,file)
md5 = md5sum(filename)
print md5,filename