fdhfgh 发表于 2017-4-28 08:02:17

python 文件过滤器

python实用技巧 : Filtering os.walk
  
'''
Created on Mar 7, 2010
@author: Diego
需求: 得到某个目录下, 符合过滤条件的文件夹/文件.
实现: 将os.walk再次包装.
TODO: 不知道本程序的做法, 和传统的逐个目录列举的方法, 哪个效率更高. 待测试.
 '''
 import  os
 import  os.path
os.path.sep = " / "
path  =   " /media/dev/project/google_codes/srgjs "
EXCLUDE_DIR_LIST  =  [ " .SVN " , " CVS " ]
EXCLUDE_FILE_LIST  =  [ " .CVSIGNORE " ]
 def  is_parent_exclude(parentPath,excludeDirList):
    ss = parentPath.split( " / " );
     for  s  in  ss:
         if (s.upper()  in  excludeDirList):
             return  True
    
     return  False
 def  filter_walk(targetDirectory,excludeDirList,excludeFileExtList):
    dirList = []
    fileList = []
     for  (parent, dirs, files)  in  os.walk(targetDirectory):
        
         for  d  in  dirs:
             if (d.upper()  in  excludeDirList):
                 continue
            
             # To check if one of the parent dir should be excluded.
              if (is_parent_exclude(parent,excludeDirList)):
                 continue
            
            dirList.append(parent + " / " + d)
            
        
         for  f  in  files:
             if (f.upper()  in  excludeFileExtList):
                 continue
             # To check if one of the parent dir should be excluded.
              if (is_parent_exclude(parent,excludeDirList)):
                 continue
            
            fileList.append(parent + " / " + f)
    
     return  (dirList,fileList)            
 # test
 dirs,files  =  filter_walk(path,EXCLUDE_DIR_LIST,EXCLUDE_FILE_LIST)
 for  d  in  dirs:
     print  d
 for  f  in  files:
     print  f
  转自:http://reader.youdao.com/sharelite?itemId=3844466130777511435&method=viewSharedItemThroughLink&sharedBy=-1137845767117085734
页: [1]
查看完整版本: python 文件过滤器