如何找到文件所在的挂载点?

2024-01-17

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

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

我已经有了完整的路径并且想要得到:

/media/my_mountpoint

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


您可以致电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

Edit: 我不知道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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何找到文件所在的挂载点? 的相关文章

随机推荐