python包装os.walk遍历目录树
#******************************************** # filename: all_files.py # Author: xiyang # email: sdlgxxy@gmail.com # date: 2012-7-2 # description: # 包装os.walk实现目录树的遍历,提供更加完善的功能, # 比如文件过滤、单层遍历等 #********************************************* import os,fnmatch def all_files(root,patterns='*',single_level=False,yield_folders=False): patterns = patterns.split(';') print root for path,subdirs,files in os.walk(root): if yield_folders: files.extend(subdirs) files.sort() for name in files: for pattern in patterns: if fnmatch.fnmatch(name,pattern): yield os.path.join(path,name) break if single_level: break if __name__ == '__main__': for path in all_files('f:/workspace/python/','*.txt;*.log'): print path
在实际应用中目录遍历是一个很常用的功能,通过以上的包装有以下几点好处:
- 可以实现文件后缀的过滤
- 实现文件夹的遍历
- 实现文件名的排序
在实际的应用中,可以根据情况自己扩展。
参考:python cookbook