这是我第一次使用DBus,所以请耐心等待。 这是我的代码:
import gobject
import pprint
gobject.threads_init()
from dbus import glib
glib.init_threads()
import dbus
bus = dbus.SessionBus()
remote_object = bus.get_object("org.freedesktop.UDisks", # Connection name
"/org/freedesktop/UDisks" # Object's path
)
print ("Introspection data:\n")
print remote_object.Introspect()
print remote_object.get_dbus_method("ListNames",dbus_interface="org.freedesktop.DBus")
for item in remote_object.ListNames():
print item
我得到的错误是:
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.UDisks was not provided by any .service files
udisks-daemon在系统消息总线上提供org.freedesktop.UDisks服务。 用户或管理员永远不需要启动此守护进程,因为只要应用程序调用org.freedesktop.UDisks服务,dbus-daemon(1)就会自动启动它。请参阅udisks(7)man有关如何自定义udisks-daemon如何工作的信息的页面。
编辑:所以它是SystemSession()
而不是SessionBus()
答案 0 :(得分:2)
您可以尝试使用DFeet来检查此dbus对象是否确实存在。
答案 1 :(得分:1)
以下对我有用,但我没有看到你使用的ListNames方法,所以我使用了EnumerateDevices。
import dbus bus = dbus.SystemBus() udisks = bus.get_object("org.freedesktop.UDisks", "/org/freedesktop/UDisks") udisks = dbus.Interface(udisks, 'org.freedesktop.UDisks') devices = udisks.get_dbus_method('EnumerateDevices')()