Выбор папок с использованием строк в Python - PullRequest
0 голосов
/ 11 сентября 2011

Простой вопрос: я пытаюсь идентифицировать папки с определенной строкой в ​​их имени, но я хочу указать некоторые дополнительные критерии исключения.Прямо сейчас я ищу все папки, которые начинаются с определенной строки, используя этот синтаксис:

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 ]

0 голосов
/ 11 сентября 2011

попробуйте использовать регулярное выражение

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)
0 голосов
/ 11 сентября 2011

Не уверен, что я полностью понимаю проблемы, но я предлагаю 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...