Получить файлы только из третьего уровня каталога - PullRequest
0 голосов
/ 20 декабря 2018

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

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 Ответ

0 голосов
/ 20 декабря 2018

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

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.

...