返回Python中顶级目录的路径:比较两个解决方案

时间:2012-02-29 02:47:03

标签: python algorithm directory

在搜索了如何仅在python中返回顶级文件夹的路径之后,我发现了两种截然不同的方法似乎返回相同的结果:

def listTopDirs(folder):
    return [name for name in (os.path.join(folder, each) for each in os.listdir(folder)) if os.path.isdir(name)]

Vs以上。

def listTopDirs():
    return [os.path.abspath(name) for name in os.listdir(".") if os.path.isdir(name)]

当我在我的机器上试用它们时,它们会返回相同数量的结果。

要么被认为更加pythonic?使用一个比另一个算法有什么算法优势吗?

1 个答案:

答案 0 :(得分:1)

虽然第二个片段对我来说似乎更像Pythonic,但快速测试证明第一个片段更快。我在下面发布了结果。


def listTopDirs(folder):
    return [name for name in (os.path.join(folder, each) for each in os.listdir(folder)) if os.path.isdir(name)]

$ python -m timeit 'import os;r = [name for name in (os.path.join(".", each) for each in os.listdir(".")) if os.path.isdir(name)]'
100 loops, best of 3: 2.59 msec per loop
100 loops, best of 3: 2.60 msec per loop

def listTopDirs():
    return [os.path.abspath(name) for name in os.listdir(".") if os.path.isdir(name)]

$ python -m timeit 'import os;r = [os.path.abspath(name) for name in os.listdir(".") if os.path.isdir(name)]'
100 loops, best of 3: 4.54 msec per loop
100 loops, best of 3: 4.54 msec per loop