Проходить по каталогам с помощью python? - PullRequest
0 голосов
/ 10 октября 2018

Я новичок в Python.У меня есть папка с именем logs, естественно, они будут распределены по папкам, и в этих папках также будут подпапки для подкатегорий.Теперь моя проблема в том, что у меня есть функция, которая просматривает подкаталоги и получает папку журналов.

Мой вопрос заключается в том, почему приведенный ниже код не работает должным образом. Я также получаю файлы папки журналов в блоке else.

def printFiles(directory_path):    
    for root, _, filenames in os.walk(directory_path):
        dirname = os.path.basename(root).strip()
        if str(dirname) == 'logs' and len(dirname) == 4:
            for filename in filenames:
                file_path = os.path.join(root, filename)
                withLogFile(file_path)
        else:
            for filename in filenames:
                file_path = os.path.join(root, filename)
                withoutLogfile(file_path)

1 Ответ

0 голосов
/ 10 октября 2018

Если я правильно понял ваш вопрос, ваша проблема в том, что вы хотите, чтобы все файлы находились в любом подкаталоге папки с именем logs.В настоящее время ваш код решает, что что-то является файлом журнала, только если он находится непосредственно в папке «logs».Чтобы это исправить, измените

dirname = os.path.basename(root).strip()
if str(dirname) == 'logs' and len(dirname) == 4:

на

if 'logs' in root.split('/'):

Ваш текущий код проверяет, называется ли последняя часть текущего каталога журналами (и имеет длину 4, которую ядумаю, что это излишне).Новый код проверяет, находится ли папка журналов где-нибудь в пути к файлу для каталога, в котором вы просматриваете. Разделение на '/' должно гарантировать, что вы случайно не нажмете что-то вроде / blogs.

...