Переменная для структурного хранения каталога, подкаталогов и файлов пути - PullRequest
0 голосов
/ 21 мая 2018

Хорошо, вот что я хочу сделать: у меня есть программа, которая позволяет настраивать его меню с помощью .py, который загружается при запуске.Цель состоит в том, чтобы добавить новый значок меню, который затем открывает структуру подменю, которая следует структуре папок и файлов внутри предварительно определенного пути.Внутри этой папки есть небольшие инструменты / сценарии, которые можно использовать в программе.

Я нашел некоторый рекурсивный код, который несколько выполняет свою работу, но он слишком сложен, и я хочу сделать это самостоятельно.Вот изображение примера дерева файлов: Структура папки с примерами

Как создать подменю 'other', для 'other' создать подменю 'lumapictures' и 'pixelfudger, для' lumapictures 'создатьканалы ... и т. д. , поэтому позже структура подменю должна отражать структуру папок пути, а файлы в поддире должны быть добавлены как элементы в соответствующее подменю.

Вот часть, для которой у меня нет интеллектуального решения: Мне нужно создать переменную для хранения каждого подкаталога (и, если они существуют, других подкаталогов внутри этого sibdir) и файлов, возможно, существующих в этих каталогах.умным способом.Позже мне нужно использовать эту переменную, чтобы добавить подменю для каждой папки (и папок внутри), и, если в ней есть .gizmo, добавить их в соответствующие подменю в качестве элементов.Чтобы добавить .gizmo, мне нужно правильное подменю (также называемое папкой в ​​дереве путей) и полный путь к нему, чтобы добавить его в качестве элемента, который я знаю о os.listdir(), чтобы вывести список всех папок или всех файлов данной папки сos.isdir и через поиск узнал о

os.walk() #sample
# traverse root directory, and list directories as dirs and files as files
for root, dirs, files in os.walk("/mnt/WD4TB/Backups/formultiboot/nuke/gizmos"):
    print (root)
    print (dirs)
    print (files)

returns:

/mnt/WD4TB/Backups/formultiboot/nuke/gizmos
['3d', 'despill', 'edge', 'fx', 'grain', 'key', 'other']
['L_ChannelSolo_v01.gizmo']
/mnt/WD4TB/Backups/formultiboot/nuke/gizmos/3d
[]
[]
/mnt/WD4TB/Backups/formultiboot/nuke/gizmos/despill
[]
['DespillMadness.gizmo', 'L_Despill_v05.gizmo']
/mnt/WD4TB/Backups/formultiboot/nuke/gizmos/edge
[]
[]
/mnt/WD4TB/Backups/formultiboot/nuke/gizmos/fx
[]
['expoglow.gizmo']
/mnt/WD4TB/Backups/formultiboot/nuke/gizmos/grain
[]
['L_Grain_v05.gizmo']
/mnt/WD4TB/Backups/formultiboot/nuke/gizmos/key
[]
[]
/mnt/WD4TB/Backups/formultiboot/nuke/gizmos/other
['lumapictures', 'pixelfudger']
[]
/mnt/WD4TB/Backups/formultiboot/nuke/gizmos/other/lumapictures
['Channel']
['L_ChannelSolo_v01.gizmo']
/mnt/WD4TB/Backups/formultiboot/nuke/gizmos/other/lumapictures/Channel
[]
['L_ChannelSolo_v01.gizmo']
/mnt/WD4TB/Backups/formultiboot/nuke/gizmos/other/pixelfudger
[]
['pixelfudger.py', 'PxF_Bandpass.gizmo', 'PxF_Bandpass.png', 'PxF_ChromaBlur.gizmo', 'PxF_ChromaBlur.png', 'PxF_Distort.gizmo']
...