在python中,给定一个像/ usr / local这样的目录或文件路径,我需要获得可用的文件系统。在某些系统中,它可能是/(root)本身,而在其他系统中它可能是/ usr。
我试过os.statvfs它没有帮助。我是否必须使用路径名运行df命令并从输出中提取文件系统?有更好的解决方案吗?
仅适用于linux / unix平台。
由于
答案 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}}输出。