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

时间:2014-07-11 20:30:14

标签: 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.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(目录).split(' \\')[1]来取消那个烦人的频道\\'但是我觉得有一种更顺畅的方法可以做到这一点,我确信我认为过于复杂。 有没有人有任何建议?

1 个答案:

答案 0 :(得分:0)

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

使用os.path.basename()执行此操作。

示例:

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