在Python中,如何获取给定文件路径的文件系统

时间:2011-08-19 09:31:26

标签: python filesystems filepath

在python中,给定一个像/ usr / local这样的目录或文件路径,我需要获得可用的文件系统。在某些系统中,它可能是/(root)本身,而在其他系统中它可能是/ usr。

我试过os.statvfs它没有帮助。我是否必须使用路径名运行df命令并从输出中提取文件系统?有更好的解决方案吗?

仅适用于linux / unix平台。

由于

3 个答案:

答案 0 :(得分:6)

以下是here配方的略微修改版本。 添加了os.path.realpath,因此正确处理了符号链接。

import os
def getmount(path):        
    path = os.path.realpath(os.path.abspath(path))
    while path != os.path.sep:
        if os.path.ismount(path):
            return path
        path = os.path.abspath(os.path.join(path, os.pardir))
    return path

答案 1 :(得分:4)

使用os.stat获取相关文件/目录的设备号(st_dev字段),然后迭代系统挂载(/etc/mtab/proc/mounts),比较每个挂载点的st_dev都带有此编号。

答案 2 :(得分:2)

df本身打开并解析/etc/mtab时,您可以采用这种方式解析此文件(另一种方法是/proc/mounts),或者您确实解析了df 1}}输出。