2011-01-30 48 views
2

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

回答

1

这样使用时e2label命令会告诉你卷标:

e2label /dev/sda1 

注:EXT2,EXT3,EXT4或文件系统这仅适用。

从Python,可以用os.systemPopen

+0

我真的需要更多的通用解决方案。因为我要处理可移动驱动器,所以我可以从vfat获取到ntfs和其他文件。 – MeanEYE 2011-01-30 14:24:20

2

调用而不是使用e2label命令的命令,你可以使用blkid,然后分析其输出:

$ blkid -o value -s LABEL /dev/sda1 
/boot 
相关问题