2011-09-11 2 views
0

간단한 질문은 : 이름에 특정 문자열이있는 폴더를 식별하려고하지만 몇 가지 추가 제외 기준을 지정하고 싶습니다. ('B03.2', 'B03.1') 내가 찾고 있어요 하위 폴더를 식별 않습니다이 동안Python에서 문자열을 사용하여 폴더 선택

import os 
parent_cause = 'B03' 
path = ('filepath') 
child_causes = [x for x in os.listdir(path) if x.startswith(parent_cause + '.')] 

: 지금,이 구문을 사용하여 특정 문자열로 시작하는 모든 폴더를 찾고 있어요 , 제외시키고 자하는 더 깊은 하위 폴더도 포함합니다 ('B03.1.1', 'B03.1.2'). 문자열을 시작하지만 둘 이상의 '.'문자를 포함하는 하위 폴더를 제외하는 하위 알고리즘을 식별하는 간단한 알고리즘에 대한 생각. 부모보다?

+2

확실하지가 될 것입니다하지만 당신은 지능형리스트에 추가하려고 할 수있는 방법 확대됨에 이것과 조건 -'... if x.startswith (parent_cause + '.')와 x.count ('.') == 1' – arunkumar

답변

0

확실하지 나는 완전히 문제를 이해하지만, 나는 os.walk 제안

good_dirs = [] 
bad_dirs = [] 

for root, files, dirs in os.walk("/tmp/folder/B03"): 
    # this will walk recursively depth first into B03 
    # root will be the pwd, so we can test for that 
    if root.count(".") == 1: ###i think aregex here might help 
     good_dirs.append(root) 
    else: 
     bad_dirs.append(root) 
0

사용해보십시오 정규식

import os 
import re 
parent_cause = 'B03' 
path = ('filepath') 
validPath = [] 
for eachDir in os.listdir(path): 
    if re.match('^%s\.\d+$' % parent_cause, eachDir): 
     validPath.append(path+'/'+eachDir)