Вот что я обычно делаю, когда мне нужно l oop по каталогу и его дочернему элементу рекурсивно:
import os
main_folder = '/path/to/the/main/folder'
files_to_process = [os.path.join(main_folder, child) for child in os.listdir(main_folder)]
while files_to_process:
child = files_to_process.pop()
if os.path.isdir(child):
files_to_process.extend(os.path.join(child, sub_child) for sub_child in os.listdir(child))
else:
# We have a file here, we can do what we want with it
Это коротко, но имеет довольно сильные предположения:
- Вас не волнует порядок, в котором обрабатываются файлы.
- У вас есть только каталоги или обычные файлы в дочерних элементах вашей точки входа.
Редактировать : добавлено еще одно возможное решение с использованием glob
, благодаря комментарию @ jacques-gaudin
Преимущество этого решения в том, что вы обязательно получите только файлы .inp
, но вы все еще не уверены их порядка.
import glob
main_folder = '/path/to/the/main/folder'
files_to_process = glob.glob('%s/**/*.inp' % main_folder, recursive=Tre)
for found_file in files_to_process:
# We have a file here, we can do what we want with it
Надеюсь, это поможет!