一尘不染

如何找到文件所在的安装点?

linux

例如,我有一个带有以下路径的文件:

/media/my_mountpoint/path/to/file.txt

我有完整的道路,想得到:

/media/my_mountpoint

我怎样才能做到这一点?最好在Python中且不使用外部库/工具。(都不是必需的。)


阅读 227

收藏
2020-06-02

共1个答案

一尘不染

您可以调用mount命令并解析其输出以找到路径中最长的公用前缀,或者使用stat系统调用获取文件所在的设备,然后沿树向上移动,直到到达其他设备。

在Python中,stat可以按以下方式使用(未经测试,可能必须扩展以处理符号链接和诸如联合安装的奇特事物):

def find_mount_point(path):
    path = os.path.abspath(path)
    orig_dev = os.stat(path).st_dev

    while path != '/':
        dir = os.path.dirname(path)
        if os.stat(dir).st_dev != orig_dev:
            # we crossed the device border
            break
        path = dir
    return path

编辑os.path.ismount直到现在我才知道。这大大简化了事情。

def find_mount_point(path):
    path = os.path.abspath(path)
    while not os.path.ismount(path):
        path = os.path.dirname(path)
    return path
2020-06-02