如何根据设备名称使用Python获取卷标
我正在做一个类似于Linux中已挂载设备列表的东西。
在程序启动时,我会解析一下/etc/mtab文件,看看有哪些已经挂载的设备。为了能收到系统中新添加的挂载设备的通知,我使用了DBus。在收到的消息中,有一个叫做volume.label的属性。我想知道有没有办法根据设备名称,比如/dev/sda1或/dev/sdd,来获取这个卷的标签。
编辑:
经过一段时间的研究,我找到了解决这个问题的方法。Python的gio
模块里有一个叫做VolumeMonitor的类。通过调用get_mounts()
方法,获取带有好名字和正确图标的挂载列表变得非常简单:
for mount in volume_monitor.get_mounts():
print mount.get_name(), mount.get_icon()
你还可以获取驱动器和卷的列表。你也可以连接一些信号,以便适时更新列表。不过有一点需要注意。卷是列表中第一个出现的,并且会首先触发自己的事件,而挂载则会稍后出现。所以如果你想保持一个活动挂载的列表,应该监听mount-added
和mount-removed
信号,而不是volume-added
和volume-removed
信号。
2 个回答
1
e2label
这个命令可以用来查看卷标,使用方法如下:
e2label /dev/sda1
注意:这个命令只适用于 ext2、ext3 或 ext4 文件系统。
在 Python 中,你可以通过 os.system
或 Popen
来调用这个命令。
2
你可以不用 e2label
这个命令,改用 blkid
命令,然后分析它的输出结果:
$ blkid -o value -s LABEL /dev/sda1
/boot