我使用我的方法获取文件夹/文件检测已经有一段时间了,我将它存储在字典中。
文件夹设置如下:
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]来取消那个烦人的频道\\'但是我觉得有一种更顺畅的方法可以做到这一点,我确信我认为过于复杂。
有没有人有任何建议?
答案 0 :(得分:0)
directory
中的os.walk()
部分包含完整的相对路径。您只需要从中提取目录名称。
使用os.path.basename()
执行此操作。
示例:
>>> import os
>>> os.path.basename('channel/subchannel1')
'subchannel1'
>>> os.path.basename('channel/subchannel2')
'subchannel2'