删除名称中带有括号的重复文件,仅当原始文件存在时



我没有真正找到任何适合我需求的东西,也不知道如何继续。

我有很多照片,分散在不同的文件夹中,而其中许多只是重复的。例如:

20180514.jpg(1(.jpg
20180514.jpg

220180514(1(jpg

现在,我想创建一个python脚本,它查找带括号的文件,检查是否存在不带括号的相关文件,并删除带括号的该文件。由于我缺乏python技能,我设法搜索到了所有带有通配符的文件:

parenthesisList = glob.glob('**/*(*)*', recursive=True)

理论上可以从那里删除它们,但有了3万多张图片,我不敢直接删除它们,不知道它们是否真的有原始文件。

现在棘手的部分是将该列表与另一个列表进行比较,后者类似于:

everythingList = glob.glob('**/*(*)*', recursive=True)

和要评估,中的哪个文件parenthesisList有一个文件,除了括号外,其他名称都相同。

额外的一点是,如果文件大小相同或更小,只删除文件,但真的不需要。谢谢你的帮助!

编辑:我的帖子听起来像是想让人帮我做,但如果不清楚,我的问题是:你如何检查列表A中的项目是否包含列表A减去"("的项目?

from os import listdir

for filename in listdir(r"C:Users...Pictures"):
# check if file name contains parenthesis 
if "(" in filename:
os.remove(r"C:Users...Pictures\" + filename)

注意,这也将删除带有"的文件夹名称;(".

最新更新