变量在结构上保存路径的目录、子目录和文件

2024-10-03 13:18:47 发布

您现在位置:Python中文网/ 问答频道 /正文

好的,下面是我想做的: 我有一个程序,允许自定义它的菜单的一个.py是在启动时加载。目标是添加一个新的菜单图标,然后打开一个子菜单结构,该子菜单结构遵循预定义路径中的文件夹和文件结构。在这些文件夹中,有一些可以在程序中使用的工具/脚本

我发现一些递归代码在某种程度上完成了这项工作,但是 这太复杂了,我想自己做。 下面是一个示例文件树的图片: Sample folder structrue

像创建子菜单“其他”一样,对于“其他”创建子菜单的“lumapictures”和“pixelfudger”,对于“lumapictures”创建通道。。。等等因此,稍后子菜单结构应反映路径的文件夹结构,子菜单中的文件应作为项目添加到相应的子菜单中。

以下是我没有智能解决方案的部分: 我需要创建一个变量来存储每个subdir(如果这个sibdir中存在其他subdir)以及这些目录中可能存在的文件。稍后,我需要使用此变量为每个文件夹(以及其中的文件夹)添加子菜单,如果其中有.gizmo,则将它们作为项目添加到相应的子菜单中。要添加.gizmo,我需要正确的子菜单(路径树中的aka文件夹)和完整路径,以便将其添加为项目 我知道关于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']

Tags: 文件路径文件夹菜单结构othergizmonuke