例如,我有一个带有以下路径的文件:
/media/my_mountpoint/path/to/file.txt
我有完整的道路,想得到:
/media/my_mountpoint
我怎样才能做到这一点?最好在Python中且不使用外部库/工具。(都不是必需的。)
您可以调用mount命令并解析其输出以找到路径中最长的公用前缀,或者使用stat系统调用获取文件所在的设备,然后沿树向上移动,直到到达其他设备。
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直到现在我才知道。这大大简化了事情。
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