2011-01-30 93 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 
相關問題