1 回答
TA贡献1856条经验 获得超11个赞
您的代码只是比必要的复杂一点,并且您没有应用正确的方法从路径和文件名中创建文件路径。而且我认为您不应该删除没有原始文件的文件(即虽然名称看起来像但不重复的文件)。
尝试这个:
for file_name in file_list:
if "(1)" not in file_name:
continue
original_file_name = file_name.replace('(1)', '')
if not os.path.exists(os.path.join(file_path, original_file_name):
continue # do not remove files which have no original
os.remove(os.path.join(file_path, file_name))
但是请注意,这对于其中多次出现的文件不能正常工作(1)
,并且(2)
根本不会处理具有或更高数字的文件。所以我真正的提议是这样的:
在给定开始下方的整个目录树中列出所有文件(用于
os.walk()
获取此信息),然后按大小对所有文件进行排序,然后
线性遍历此列表,识别双打(此列表中的邻居)和
产生每个这样的双组(即一个小的文件列表(通常只有两个),它们是相同的)。
当然,您应该检查这几个文件的内容,然后确保其中的两个文件大小相同而不相同。如果您确定您有一组相同的名称,请删除除名称最简单的名称以外的所有名称(例如,没有后缀(1)
等)。
顺便说一下,我会调用file_path
类似dir_path
or的东西root_dir_path
(因为它是一个目录和一个完整的路径)。
添加回答
举报