从具有最多可用空间的元组中查找路径

时间:2016-02-07 23:36:53

标签: python

我有一个像文件系统路径一样的元组:

storage_locations = (
    '/Location/One/',
    '/Location/Two/',
    '/Location/Three/',
)

这些可能位于具有不同可用空间量的各种磁盘上。我想找到拥有最多自由空间的路径,但我无法弄清楚它是如何以一种看似不太复杂的方式。

我到目前为止:

def get_free_space(path):
    return shutil.disk_usage(path).free

largest_space = max(map(get_free_space, storage_locations))

我想要的信息是具有最大可用空间量的位置的路径,但是,我只有在该位置可用的字节数。

我觉得必须有一种方法可以在飞行中创建一个dict,其中每对包含路径和该路径上的空闲空间量。然后,使用它,找到可用空间最大的路径。

但是在尝试了很多事情后,我似乎无法在一个很好的方法中做到这一点,只需几行左右,同时仍然可读。必须有一种“pythonic”方式才能做到这一点:)

1 个答案:

答案 0 :(得分:2)

由于max依次考虑元组的每个项目,因此您可以将自由空间与路径相关联并将它们都返回。

>>> storage_locations = [ '/' ]
>>> max((shutil.disk_usage(path).free, path) for path in storage_locations)
(570431541248, '/')
>>> 

如果你想要一个字典,你可以类似地构建它

>>> dict(((path, shutil.disk_usage(path).free) for path in storage_locations))
{'/': 570431426560}