【发布时间】:2016-03-03 09:44:00
【问题描述】:
我正在为 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()
您还可以获得驱动器和卷的列表。您还可以适当地连接一些信号并更新列表。一张纸条。 Volume 是第一个出现在列表中并且最先触发自己的事件的,mounts 稍后出现。因此,如果您希望维护活动挂载列表,请收听 mount-added 和 mount-removed 信号,而不是 volume-added 和 volume-removed。
【问题讨论】:
-
ModuleNotFoundError: No module named 'gio'
标签: python linux label volume mount