【问题标题】:How to get volume label based on device name using Python如何使用 Python 根据设备名称获取卷标
【发布时间】: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


【解决方案1】:

您可以使用blkid,而不是使用e2label 命令,然后解析其输出:

$ blkid -o value -s LABEL /dev/sda1
/boot

【讨论】:

    【解决方案2】:

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

    e2label /dev/sda1
    

    注意:这只适用于 ext2、ext3 或 ext4 文件系统。

    在 Python 中,您可以使用 os.system 或 Popen 调用命令

    【讨论】:

    • 我真的需要更通用的解决方案。因为我要处理可移动驱动器,所以我可以从 vfat 到 ntfs 和其他。
    猜你喜欢
    • 2020-03-03
    • 1970-01-01
    • 1970-01-01
    • 2013-10-06
    • 1970-01-01
    • 2016-02-10
    • 1970-01-01
    • 2010-11-09
    • 2018-02-05
    相关资源
    最近更新 更多