删除 python 中具有相似名称的较小的 mp3 文件

delete smaller mp3 files with similar name in python

我一直面临以下问题:

背后的逻辑是制作 2 个列表,有括号和没有括号。 但是现在呢? 你能给我一些如何完成它的建议吗?不管怎样,逻辑够好吗?

你可以这样做:

import os
import datetime
import re
import sys
import glob
from collections import Counter

path = "mp3_files"

dirs = os.listdir( path )
to_remove=[]

for i in range(len(dirs)):
    for j in range (i+1,len(dirs)):
        # get names without (n)
        namei=re.sub('\(\d+\)','',dirs[i])
        namej=re.sub('\(\d+\)',"",dirs[j])
        # get sizes
        sizei=os.path.getsize(os.path.join(path, dirs[i]))
        sizej=os.path.getsize(os.path.join(path, dirs[j]))
        
        # if same name check size
        if namei==namej and sizei<sizej:
            to_remove.append(dirs[i])
        elif namei==namej and sizei>=sizej:
            to_remove.append(dirs[j])
            
for file in set(to_remove):
    # os.remove(os.path.join(path, file))
    print(os.path.join(path, file)

这将遍历文件列表并将它们与其余文件进行检查,如果不带括号的名称相同,则将较小的添加到要删除的文件列表中。最后删除文件。

** 请注意,我注释掉了实际的删除并添加了打印,因此您可以先 运行 它并确保它会删除您想要的内容。 删除前请做好备份!! :)