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

Python 在dict中存储文件夹+文件,优化,python,dictionary,iteration,python-3.2,os.walk,Python,Dictionary,Iteration,Python 3.2,Os.walk,我在获取文件夹/文件检测的方法上花了相当长的时间,该方法将文件夹/文件存储在字典中 文件夹设置如下所示: 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.c

我在获取文件夹/文件检测的方法上花了相当长的时间,该方法将文件夹/文件存储在字典中

文件夹设置如下所示:

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'
调用strsubdirectory而不是strdirectory会给我一个空列表作为键,我真的不明白。 当然,我可以调用strdirectory.split'\\'[1]作为摆脱讨厌的“通道”的关键,但我觉得有一种更平滑的方法可以做到这一点,而且我确信我认为过于复杂了。 有人有什么建议吗?

os.walk的目录部分包含完整的相对路径。您只需要从中提取目录名

用来做这个

例如:

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

非常感谢我想这可以用于它将识别为路径的任何东西。与仅在最后一个斜杠处拆分相比,在10多个子文件夹路径中长时间使用它是否会提高性能?这是一个内置API。相信我,它已经优化到它的潜力了。无需担心大路径。