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

 

 
posted @ 2017-05-01 23:57  SpeicalLife  阅读(1193)  评论(0编辑  收藏  举报