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

在实际应用中目录遍历是一个很常用的功能,通过以上的包装有以下几点好处:

  1. 可以实现文件后缀的过滤
  2. 实现文件夹的遍历
  3. 实现文件名的排序

在实际的应用中,可以根据情况自己扩展。

参考:python cookbook

posted on 2012-07-03 12:51  lepfinder  阅读(897)  评论(0编辑  收藏  举报