Получить файлы только из третьего уровня каталога

У меня есть каталог, который имеет следующую форму:

A /: корень

B/: Подкаталог первого уровня, который содержит следующие каталоги

01/  02/ 03/ 04/ 05/ 06/ 07/

C/: третий уровень, где каждый подкаталог из B/ (01/ или 02/ или 03/ или 04/ или 05/ или 06/ или 07/) содержит до трех подкаталогов

001/ 002/ 003/

В 001/ 002/ 003/ я хочу получить файлы:

Мое дерево выглядит следующим образом: A/B/C/01/001/files.txt

Как я могу получить доступ к этому?

Что я пробовал?

    for root, dirs,files in sorted(os.walk(path+ "/", topdown=False)):  # root

        for lab in dirs:  # level 1 
            new_path=path+category+'/'+lab+'/'
            for ro,dir,f in os.walk(new_path): #level 2
                for dr in dir:
                    for ri, dir, file in os.walk(new_path+'/'+dr): #level 3 
                        os.chdir(new_path+'/'+dr)
                        text_file=glob.glob("*.txt")

Есть ли эффективный способ сделать это, избегая 5 вложенных циклов?

1 ответ

Решение

Это одно, когда я пытаюсь работать у меня

import os

path = r'C:\root'

for root, dirs,files in os.walk(path):  # root
    for f in files:
        print(f)

При этом выводятся все файлы на уровне 3. По сути, это файлы, содержащиеся в трех подкаталогах 001/ 002/ 003/ из каждого из 7 каталогов на уровне B.

Другие вопросы по тегам