在dict中存储文件夹+文件,优化

2024-05-29 07:59:49 发布

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

我有一个小斗争相当长的一段时间,我的方法获得一个文件夹/文件检测,它存储在字典里。你知道吗

文件夹设置如下:

channel / subchannel1 / 1.cfg, 2.cfg, 3.cfg
channel / subchannel2 / 4.cfg, 5.cfg, 6.cfg

我想把它存储在一个字典里,子通道作为一个键,包含的文件作为一个列表,如下所示:

{'subchannel1': ['1.cfg', '2.cfg', '3.cfg'], 'subchannel2': ['4.cfg', '5.cfg', '6.cfg']}

我已经差不多完成了,但是我觉得还有更好的方法。 我的方法是:

import os

def getFiles():

    testdict = {}

    for directory, subdirectory, files in os.walk("channel"):
        for file in files:
            testdict[str(directory)] = testdict.get(str(directory),[])+[file]

    return testdict

但是,如果我把它打印出来,字典就有了关键:

'channel\\subchannel1', 'channel\\subchannel2'

而不是:

'subchannel1', 'subchannel2'

调用str(子目录)而不是str(目录)会给我一个空列表作为键,我真的不明白。
当然,我可以调用str(directory).split('\\')[1]作为键来摆脱恼人的'channel\\',但我觉得有一种更平滑的方法可以做到这一点,我确信我认为过于复杂了。 有人有什么建议吗?你知道吗


Tags: 文件方法文件夹列表for字典oschannel
1条回答
网友
1楼 · 发布于 2024-05-29 07:59:49

来自os.walk()directory部分包含完整的相对路径。您只需要从中提取目录名。你知道吗

使用^{}来执行此操作。你知道吗

示例:

>>> import os
>>> os.path.basename('channel/subchannel1')
'subchannel1'
>>> os.path.basename('channel/subchannel2')
'subchannel2'

相关问题 更多 >

    热门问题