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。相信我,它已经优化到它的潜力了。无需担心大路径。