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

 

你可能感兴趣的:(python,python)