获取具有相同名称的文件,而不考虑其扩展名

2024-09-23 10:30:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我想列出所有同名的文件,而不考虑它们的扩展名。

os.walk当我试图搜索没有扩展名的文件名,但当我提到扩展名为的文件名时,结果是空列表。它列出了存在于任何目录中具有相同名称和扩展名的所有文件。在

def get_all_files(path):
    Datafiles=[]

    for root,dirs,files in os.walk(path):
        for file in files:
            pathname=os.path.join(root,file)
            Datafiles.append([file,pathname])

    return Datafiles

Tags: 文件pathin目录列表foros文件名
1条回答
网友
1楼 · 发布于 2024-09-23 10:30:47

您可以使用fnmatch.filter()函数识别感兴趣的文件名:

import os, fnmatch

def get_all_files(path, pattern):
    datafiles = []

    for root,dirs,files in os.walk(path):
        for file in fnmatch.filter(files, pattern):
            pathname = os.path.join(root, file)
            filesize = os.stat(pathname).st_size
            datafiles.append([file, pathname, filesize])

    return datafiles

print get_all_files('.', 'something.*') # all files named 'something'

但是请注意,如果再多写几行代码,也可以使一些更通用的东西支持os.walk()的所有关键字参数:

^{pr2}$

注意,这个版本中新的glob_walk()函数(与get_all_files()一样)是生成器,就像os.walk()。在

相关问题 更多 >