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

问题描述

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

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

20180514.jpg(1).jpg
20180514.jpg

20180514(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)

请注意,这也会删除带有“(”的文件夹名称。