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

遍历目录删除指定MD5值的文件

时间:2014-11-26 20:53:44      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:style   blog   ar   color   os   sp   for   文件   数据   

  工作需要实现一个查找出指定目录下md5值与excel表格中md5值相同的文件然后删掉的功能。我是这样做的:首先遍历指定目录,计算该目录下所有文件的md5值,以文件路径为key,md5值为value保存到一个字典中;然后读取excel表格中的md5,查看字典中的value是否包含该md5,如果包含,则删除对应文件。以下是具体实现代码:

  

 1 #coding:utf-8
 2 
 3 from hashlib import md5
 4 import os,time,sys
 5 import xlrd
 6 import os
 7  
 8 md5dic = {}
 9 #读取Excel表中的md5值
10 def readXls(fname):
11     xls = xlrd.open_workbook(fname)
12     sheet_name = xls.sheet_names()
13     shxrange = range(xls.nsheets)
14 
15     try:
16         sh = xls.sheet_by_name(sheet_name[0])
17     except:
18         print "no sheet existed"
19     #获取行数
20     nrows = sh.nrows
21     #获取列数
22     ncols = sh.ncols
23     #print "nrows %d, ncols %d" % (nrows,ncols)
24     #获取第一行第一列数据 
25     cell_value = sh.cell_value(1,1)
26     #print cell_value
27      
28     row_list = []
29     #获取各行数据
30     for i in range(1,nrows):
31         row_data = sh.row_values(i)[0]
32         #print row_data
33         row_list.append(row_data)
34     md5list = list(set(row_list))
35     return md5list
36 
37 def calMD5(str):
38   m = md5()
39   m.update(str)
40   return m.hexdigest() 
41    
42 #获取指定文件的md5值  
43 def calMD5ForFile(file):
44   m = md5()
45   a_file = open(file, rb)
46   m.update(a_file.read())
47   a_file.close()
48   return m.hexdigest()
49  
50 #获取指定目录下文件的md5值保存到字典中 
51 def calMD5ForFolder(dir):
52     for root, subdirs, files in os.walk(dir):
53         for file in files:
54             filefullpath = os.path.join(root,file)
55             filerelpath = os.path.relpath(filefullpath,dir)
56             md5 = calMD5ForFile(filefullpath)            
57             md5dic[filefullpath] = md5
58     return md5dic
59             
60 #删除与excel表中md5值相同的文件
61 def delFile(filemd5,md5dic):                
62     for filefullpath in md5dic.keys():
63         if md5dic[filefullpath] == filemd5:
64             os.remove(filefullpath)
65             print filemd5,filefullpath
66 
67 if __name__ == "__main__":
68     if len(sys.argv) < 3:
69         print "Please input the file path."
70         sys.exit()
71     xlsdir = sys.argv[1]
72     sourceDir = sys.argv[2]
73     if os.path.exists(sourceDir)==False:
74         print "path not exists"
75     if os.path.isdir(sourceDir)==False:
76         print "not a directory"
77     md5dic = calMD5ForFolder(sourceDir)
78     md5list = readXls(xlsdir)
79     for i in md5list:
80         delFile(i,md5dic)

 

遍历目录删除指定MD5值的文件

标签:style   blog   ar   color   os   sp   for   文件   数据   

原文地址:http://www.cnblogs.com/goodhacker/p/4124804.html

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