码迷,mamicode.com
首页 > 其他好文 > 详细

利用os、hash模块生成目录下所有文件的md5

时间:2017-05-02 09:56:53      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:break   lease   hashlib   try   blog   ges   默认   data   walk   

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

 

 

利用os、hash模块生成目录下所有文件的md5

标签:break   lease   hashlib   try   blog   ges   默认   data   walk   

原文地址:http://www.cnblogs.com/dachenzi/p/6793912.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!