2011-09-11 8 views
0

ここで簡単な質問:名前に特定の文字列のフォルダを特定しようとしていますが、いくつかの除外基準を追加したいと思います。今、私はこの構文を使用して、特定の文字列で始まるすべてのフォルダを探しています:Pythonで文字列を使用してフォルダを選択

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

これは私が(「B03.1」、「B03.2」)を探していますサブフォルダを特定していますがそれには除外したいと考えている深いサブフォルダも含まれています( 'B03.1.1'、 'B03.1.2')。文字列を始めるが、2つ以上の '。'文字を含むサブフォルダを除外する単純なアルゴリズムに関する考え。親よりも?

+2

わからない、それは次のようになりますが、あなたはあなたのリストの内包に追加してみてください可能性がどのようにパフォーマンスこれと条件 - '... 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) 
関連する問題