如何使用Python获取基于设备名称的卷标
问题描述:
我正在制作类似于Linux的装入设备列表。如何使用Python获取基于设备名称的卷标
在程序启动时,我解析了现有安装的/ 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
。
答
这样使用时e2label
命令会告诉你卷标:
e2label /dev/sda1
注:EXT2,EXT3,EXT4或文件系统这仅适用。
从Python,可以用os.system
或Popen
答
调用而不是使用e2label
命令的命令,你可以使用blkid
,然后分析其输出:
$ blkid -o value -s LABEL /dev/sda1
/boot
我真的需要更多的通用解决方案。因为我要处理可移动驱动器,所以我可以从vfat获取到ntfs和其他文件。 – MeanEYE 2011-01-30 14:24:20