Python在给定的文件夹中找到类似的文件

Python在给定的文件夹中找到类似的文件,python,Python,我正在尝试编写一个函数,在指定的文件夹中按名称(song.mp3,song1.mp3,(1)song.mp3)查找类似的文件。我现在所拥有的: def print_duplicates(source): files_list = [] new_list = [] for dirpath, dirnames, filenames in os.walk(source): for fname in filenames: if ('\w*

我正在尝试编写一个函数,在指定的文件夹中按名称(song.mp3,song1.mp3,(1)song.mp3)查找类似的文件。我现在所拥有的:

def print_duplicates(source):
    files_list = []
    new_list = []

    for dirpath, dirnames, filenames in os.walk(source):
        for fname in filenames:
            if ('\w*' + fname + '\w*') in files_list:
                new_list.append(os.path.join(dirpath, fname))
            else:
                files_list.append(fname)

    for a in new_list:
        print(a)
如果文件名以前不在文件列表中,则会将其添加,如果是,则会将其添加到新的文件列表及其路径中。这样我就有了“重复”文件的列表。但是它不起作用,新的_列表仍然是空的


你能纠正我的错误吗?我的代码的哪一部分是错误的?

如果您想在代码中使用regex,您需要使用
re
模块

那么改变这条线,

if ('\w*' + fname + '\w*') in files_list:
对,

这与

if fname in file_list:
因为
\w*
表示零个或多个单词字符。我想你应该使用单词边界

if re.search(r'\b' + fname + r'\b', files_list):

看起来您正在尝试使用正则表达式,但实际上并没有使用正则表达式函数str不会注意正则表达式语法。你是说在一个目录中给定三个文件-
song.mp3,song1.mp3,(1)song.mp3
你想让其中一个在文件列表中,其余的在新列表中?你能添加一个输入和预期输出的示例吗,因为你的问题很不清楚,假设有一个包含test.txt、test1.txt和1test.txt文件的文件夹。我希望我的程序给出test1.txt和1test.txt的路径,因为我知道它们是test.txt的副本,但名称有点不同。然后,我想删除这些文件。谢谢你的帮助,但是我如何使用列表搜索?TypeError:应为字符串或缓冲区。请尝试此操作,
[res.search(r'regex',i).group()用于lst中的i]
if re.search(r'\b' + fname + r'\b', files_list):