获取目前所在目录:
import os
os.getcwd()
返回给定目录及其子目录的所有文件名:
def walk(dirname):
for name in os.listdir(dirname):
path = os.path.join(dirname,name)
if os.path.isfile(path): #判断该路径是否为一个正常的文件
print(path)
else: #如果该路径不是文件,则继续递归
walk(path)
查找重复文件:
思路:可以利用md5算法,计算出每个文件的密文,再进行比较;因为如果两个文件的md5加密结果一致,那他们很有可能就是重复文件、文件内容相同。
import hashlib
import os
dic = dict()
def duplicate(dirname):
for name in os.listdir(dirname):
path = os.path.join(dirname,name)
if os.path.isfile(path):
if os.path.splitext(path)[1] == '.txt': #判断是否为txt格式的文件
text = open(path,'rb')
hl = halishlib.md5() #md5加密
hl.update(text.read())
hash_code = hl.hexdigest() #转为十六进制
text.close()
md5 = str(hash_code).lower() #统一转为小写字母,方便之后的比较
if len(md5) != 0: #如果md5不为空,则加到字典中,key为路径,value为md5密文
dic[path] = md5
else:
duplicate(path)
#调用duplicate函数
duplicate('/Users/lyuhuanyi/Desktop')
val = dict() # 创建新字典
for key,value in dic.items(): #遍历所有txt格式的文件
if value not in val: #判断该md5密文是否在val中存在
val[value] = [key] # val字典:key为md5密文,value为路径,而且是list类型
else:
val[value].append(key)
if i,j in val.items():
if len(j) > 1: #判断val字典中,是否有value的长度大于1,大于1代表有重复的md5
print(j)