Как получить метку тома на основе имени устройства с помощью Python - PullRequest
2 голосов
/ 30 января 2011

Я делаю что-то вроде списка подключенных устройств для 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 первым появляется в списке и первым запускает свои собственные события, монтирование происходит позже.Поэтому, если вы хотите вести список активных монтировок, слушайте сигналы mount-added и mount-removed вместо volume-added и volume-removed.

Ответы [ 2 ]

2 голосов
/ 25 марта 2011

Вместо использования команды e2label вы можете использовать blkid и затем проанализировать ее вывод:

$ blkid -o value -s LABEL /dev/sda1
/boot
1 голос
/ 30 января 2011

Команда e2label сообщит вам метку тома при использовании так:

e2label /dev/sda1

Примечание: это работает только для файловых систем ext2, ext3 или ext4.

Из Python вы можете вызвать команду с помощью os.system или Popen

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...