如何使用Python根据设备名称获取卷标

时间:2011-01-30 13:48:16

标签: python linux label volume mount

我正在制作类似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-addedmount-removed信号,而不是volume-addedvolume-removed

2 个答案:

答案 0 :(得分:2)

您可以使用e2label,然后解析其输出,而不是使用blkid命令:

$ blkid -o value -s LABEL /dev/sda1
/boot

答案 1 :(得分:1)

e2label命令会在使用时告诉您卷标:

e2label /dev/sda1

注意:这仅适用于ext2,ext3或ext4文件系统。

从Python中,您可以使用os.systemPopen

调用该命令