您可以使用该@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()。