【问题标题】:In Python, how can I get the file system of a given file path在 Python 中,如何获取给定文件路径的文件系统
【发布时间】:2011-10-30 11:35:21
【问题描述】:
在 python 中,给定一个目录或文件路径,如 /usr/local,我需要获取可用的文件系统。在某些系统中,它可能是 /(root)本身,而在其他一些系统中,它可能是 /usr。
我试过 os.statvfs 它没有帮助。我是否必须使用路径名运行 df 命令并从输出中提取文件系统?有没有更好的解决方案?
它仅适用于 linux/unix 平台。
谢谢
【问题讨论】:
标签:
python
filesystems
filepath
【解决方案1】:
这里是 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
【解决方案2】:
使用os.stat获取相关文件/目录的设备号(st_dev字段),然后遍历系统挂载(/etc/mtab或/proc/mounts),比较每个挂载点的st_dev与这个号码。
【解决方案3】:
当df 本身打开并解析/etc/mtab 时,您可以采用这种方式并也解析此文件(替代方案是/proc/mounts),或者您确实解析df 输出。