问题描述
注意这是一个 MacOS 问题而不是一个 Linux 问题 - 它们是不同的操作系统
我想从 python 的 os.stat("foo").st_dev
中获得一个有意义的挂载点。目前这只是一个数字,我找不到任何可以交叉引用的地方。
到目前为止,我的所有搜索都通过询问 /proc/...
得到了适用于 Linux 的答案,但 /proc
在 MacOS 中不存在,因此任何此类答案都不起作用。
解决方法
我是 Linux 人,但如果不允许我使用 /proc
,我会在 /dev
目录中搜索包含以下 stat
数据的条目(即文件名) :
-
st_mode
表示是块设备(helper:stat.S_ISBLK
) -
st_rdev
匹配给定的st_dev
值
您可以遍历本地磁盘,并将磁盘的 st_rdev
与您之前获得的 st_dev
进行比较。
for mnt in glob.glob("/dev/disk?s*"):
t = os.stat(mnt)
if t.st_rdev == s.st_dev:
print(mnt)
Get device filesystem path from dev_t on macOS 基本上确认了此信息,但当然,严格来说并非重复。
就其价值而言,diskutil list -plist
打印所有磁盘标识符的机器可读 XML 属性列表,diskutil info -plist disk1s1
(例如)打印特定磁盘的信息;但这不包括您从 dev_t
os.stat().st_rdev
信息
令人讨厌的是,diskutil
在我的系统上没有手册页,但是 here is a (possibly old) on-line version.
getdevinfo package on PyPI 似乎为大多数此类信息提供了 Python 绑定,尽管 https://www.hamishmb.com/html/Docs/developer/getdevinfo/macos.html 看起来相当空闲。