如何使用Python获取基于设备名称的卷标

如何使用Python获取基于设备名称的卷标,python,linux,label,volume,mount,Python,Linux,Label,Volume,Mount,我正在制作一个类似于Linux的挂载设备列表的东西 在程序启动时,我解析现有装载的/etc/mtab。要获得有关添加到系统的新装载的通知,我将使用DBus,并且在我收到的消息中有volume.label属性。是否有任何方法可以根据设备名称(如/dev/sda1或/dev/sdd)获取卷标 编辑: 过了一段时间,我设法找到了解决这个问题的办法。Pythongio模块有一个名为VolumeMonitor的类。因此,获得具有良好名称和正确图标的列表非常简单,只需遍历get_mounts()方法的结果即

我正在制作一个类似于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()

您还可以获得驱动器和卷的列表。您还可以连接一些信号并适当地更新列表。不过有一点值得注意。卷是第一个出现在列表中的卷,也是第一个触发其自身事件的卷,挂载时间较晚。因此,如果您希望维护活动装载的列表,请听
emount added
mount removed
信号,而不是
volume added
volume removed
e2label
命令在这样使用时会告诉您卷标:

e2label /dev/sda1
注意:这只适用于ext2、ext3或ext4文件系统


在Python中,您可以使用
os.system
Popen
调用命令,而不是使用
e2label
命令,您可以使用
blkid
然后解析其输出:

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

我真的需要更通用的解决方案。因为我要处理可移动驱动器,这样我就可以从vfat获取ntfs和其他文件。
ModuleNotFoundError:没有名为“gio”的模块。