#********************************************
# 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