【发布时间】:2021-02-16 00:40:19
【问题描述】:
我有一个目录名称列表:
dirnames = ["foo/bar", "foo/bar/mydir", "bar/mydir", "bar"]
我想(递归地)创建所有目录。只需递归地创建最深的目录就足够了。在这种情况下,就足够了:
os.makedirs("foo/bar/mydir")
os.makedirs("bar/mydir")
问题:如何减少dirnames 只拥有最深的目录?
【问题讨论】:
-
到目前为止你尝试了什么?
-
一个简单的 for 循环创建所有目录的复杂度为 O(n)。如果算法比 O(n) 更差,那么缩短到仅最深的目录实际上会花费您的时间(在 Big Oh 的意义上)。
-
sorted([(len(i.split('/')), i) for i in dirnames])[-2:]将给出前 2 个最深的目录名 -
@deadshot 我认为我的失败尝试不会改善这个问题。我开始写太复杂的东西,结果方向错误,请参阅下面的好答案。事后看来,这个问题可能应该通过省略上下文来缩短。
标签: python