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

发布于 2024-11-30 12:44:19 字数 209 浏览 1 评论 0原文

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

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

它仅适用于 linux/unix 平台。

谢谢

In python, given a directory or file path like /usr/local, I need to get the file system where its available. In some systems it could be / (root) itself and in some others it could be /usr.

I tried os.statvfs it doesnt help. Do I have to run the df command with the path name and extract the file system from the output? Is there a better solution?

Its for linux/unix platforms only.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

美人如玉 2024-12-07 12:44:19

这是此处找到的配方的稍微修改版本。
添加了 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

Here is a slightly modified version of a recipe found here.
os.path.realpath was added so symlinks are handled correctly.

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
太阳公公是暖光 2024-12-07 12:44:19

使用 os.stat 获取相关文件/目录的设备号(st_dev 字段),然后迭代系统挂载(/etc/mtab) code> 或 /proc/mounts),将每个挂载点的 st_dev 与该数字进行比较。

Use os.stat to obtain device number of the file/directory in question (st_dev field), and then iterate through system mounts (/etc/mtab or /proc/mounts), comparing st_dev of each mount point with this number.

茶花眉 2024-12-07 12:44:19

由于 df 本身打开并解析 /etc/mtab,您可以采用这种方式并解析此文件(另一种选择是 /proc/mounts< /code>),或者您确实解析了 df 输出。

As df itself opens and parses /etc/mtab, you could either go this way and parse this file as well (an alternative would be /proc/mounts), or you indeed parse the df output.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文