发现硬盘空间占用过多,仔细一翻,发现存了大量的图片,还有不少是重复的。
文件夹太多,手动删又很麻烦,想了一下,决定写一个删除重复图片的代码
首先,目录下面存在大量文件夹我们需要把所有,检索可以用os自带的os.walk、递归、或者栈和队列。
前两种实现比较无聊,这里用栈来玩一下。
我们用collections模块来模拟栈,并把根目录压进栈里
import collections
rootpath = os.getcwd() # 获取根目录
filestack = collections.deque()
filestack.append(rootpath) # 压栈
picnamelist = []
finalpathdic = {}
然后出栈,用listdir得到目录下面的内容,判断文件和文件夹,是文件夹就把路径压进栈中,是文件就丢到列表中,用while循环卡住这一过程,直到栈内文件夹的路径用完。
while True:
rootpath = filestack.pop()
flist = os.listdir(rootpath)
for path in flist:
tpath = os.path.join(rootpath, path)
if os.path.isdir(tpath):
filestack.append(tpath)
else:
pas