在python中获取USB挂载点遇到困难

0 投票
1 回答
851 浏览
提问于 2025-04-18 12:16

我正在写一个Python脚本,用来列出USB大容量存储设备。我想打印出制造商、设备的大小以及它的挂载位置。USB大容量存储设备是由操作系统自动挂载的。

我已经搞定了制造商和设备大小的部分,但在获取挂载点上遇到了困难。当我运行df -h命令时,得到的结果是:

文件系统:/dev/sda1
大小:980M
已用:0
可用:980M
使用率:0%
挂载位置:/media/usb0

我想要的就是这个“挂载位置”。这是我目前的代码:

def fetchExternals():
  bus = dbus.SystemBus()
  ud_manager_obj = bus.get_object("org.freedesktop.UDisks", "/org/freedesktop/UDisks")
  ud_manager = dbus.Interface(ud_manager_obj, 'org.freedesktop.UDisks')

  for dev in ud_manager.EnumerateDevices():
    device_obj = bus.get_object("org.freedesktop.UDisks", dev)
    device_props = dbus.Interface(device_obj, dbus.PROPERTIES_IFACE)
    if device_props.Get('org.freedesktop.UDisks.Device', "DeviceIsRemovable"):
      print device_props.Get('org.freedesktop.UDisks.Device', "DriveVendor")
      print str(math.ceil(device_props.Get('org.freedesktop.UDisks.Device', "PartitionSize")/1048576.0)/1000)+' GB'

有人能告诉我,是否可以获取到存储设备上分区的挂载点吗?

补充:我对Linux和Python都很陌生,所以如果这个问题很基础,请见谅。

补充2:我还想知道分区上剩余的可用空间。

1 个回答

0

根据我所了解,获取挂载点的方法会根据不同的实现而有所不同。比如,在OSX系统上,你可以使用diskutil命令,在插入USB设备之前和之后来获取新设备的挂载点。而在Linux系统上,使用的工具会有所不同。

另外,你可以使用这个库和示例来检测USB设备何时被挂载。你需要等几秒钟让设备挂载完成,然后检查一下新设备。

撰写回答