【发布时间】:2013-09-11 17:29:27
【问题描述】:
我正在编写一个小程序来列出可用的 USB 设备。我创建了一个带有函数的单独文件,以便可以随时从其他脚本访问它。此函数的主要目标是返回列表/数组作为输出。如果我使用 print 命令,它会成功打印可用设备的列表。但是,当我使用 return 命令时,它只会重新启动第一个检测到的设备。我已经解决了来自 SO 的其他类似问题,但找不到任何有效的解决方案。这是我尝试使用 dbus 的代码。任何帮助都会得到帮助。
#!/usr/bin/python2.7
import dbus
def find_usb(self):
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', "DriveConnectionInterface") == "usb" and device_props.Get('org.freedesktop.UDisks.Device', "DeviceIsPartition"):
if device_props.Get('org.freedesktop.UDisks.Device', "DeviceIsMounted"):
device_file = device_props.Get('org.freedesktop.UDisks.Device', "DeviceFile")
#print device_file
return device_file
else:
print "Device not mounted"
find_usb("")
【问题讨论】:
-
没有使用过 dbus,但据我所知,返回 device_file,你只是在第一次执行时返回,它不会让循环遍历所有可用的结果。在此处使用列表,这将起作用。 device_file 到底是什么?名称似乎令人困惑。请澄清一下?
-
device_file 是插入的usb的分区。在上面的脚本中,它只是一个字符串。当你执行脚本时,你会得到这样的输出“/dev/sdc1”