我正在尝试通过我的图像目录和删除重复的图像。但是,我想递归地遍历我的目录并删除与文件名具有相同日期的第二个图像。当我列出文件时,我这样做:
my_current_image_path = r'../Desktop/Images/city1'
for f in sorted(listdir(my_current_image_path)):
print(f)
我得到这样的输出:
20190602_051825_Visual.tif
20190604_052001_Visual.tif
20190605_044324_Visual.tif
20190605_052033_Visual.tif
20190607_044351_Visual.tif
20190607_051806_Visual.tif
20190611_051850_Visual.tif
第3和第4个条目具有相同的DAY(05),第5和第6个条目具有相同的DAY(07)(文件名读取为:DATE_TIME_Visual.tif)。我希望能够使用某种循环来查看图像文件,下一个图像文件,然后当它看到文件名的日期部分匹配时,删除那个额外的图像(可能使用os.remove),但我不确定如何去做。如有任何帮助,不胜感激。
使用set
来保存已看到的日期。如果日期已经在集合中,则删除该文件。
dates = set()
for f in sorted(listdir(my_current_image_path)):
date = f.split('_')[0]
if date in dates:
os.remove(os.path.join(my_current_image_path, f))
else:
dates.add(date)