您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

不论文件扩展名如何,均使用相同名称获取文件

不论文件扩展名如何,均使用相同名称获取文件

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

@H_404_1@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'

但是请注意,通过增加几行代码,也可以使某些通用类支持所有@H_404_1@os.walk()的关键字参数

@H_404_1@import os, fnmatch

def glob_walk(top, pattern, **kwargs):
    """ Wrapper for os.walk() that filters the files returned
        with a pattern composed of Unix shell-style wildcards
        as documented in the fnmatch module.
    """
    for root, dirs, files in os.walk(top, **kwargs):
        yield root, dirs, fnmatch.filter(files, pattern)

# sample usage
def get_all_files(path, pattern):
    for root, dirs, files in glob_walk(path, pattern):
        for file in files:
            pathname = os.path.join(root, file)
            filesize = os.stat(pathname).st_size
            yield file, pathname, filesize

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

请注意,此版本中的新@H_404_1@glob_walk()函数(与wll一样@H_404_1@get_all_files())是生成器,就像@H_404_1@os.walk()。

其他 2022/1/1 18:47:01 有497人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶