首页 > 代码库 > 遍历目录删除指定MD5值的文件
遍历目录删除指定MD5值的文件
工作需要实现一个查找出指定目录下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.nrows21 #获取列数22 ncols = sh.ncols23 #print "nrows %d, ncols %d" % (nrows,ncols)24 #获取第一行第一列数据 25 cell_value = http://www.mamicode.com/sh.cell_value(1,1)26 #print cell_value27 28 row_list = []29 #获取各行数据30 for i in range(1,nrows):31 row_data =http://www.mamicode.com/ sh.row_values(i)[0]32 #print row_data33 row_list.append(row_data)34 md5list = list(set(row_list))35 return md5list36 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] = md558 return md5dic59 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,filefullpath66 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值的文件
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。