Получить файлы только из третьего уровня каталога
У меня есть каталог, который имеет следующую форму:
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.