代码之家  ›  专栏  ›  技术社区  ›  dierre

无法通过DBus Python连接到org.freedesktop.UDisks

  •  3
  • dierre  · 技术社区  · 14 年前

    这是我的代码:

    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
    

    udisk-demon manpage

    udisks守护进程在系统消息总线上提供org.freedesktop.udisks服务。 有关如何自定义udisks守护进程工作方式的信息,请参阅udisks(7)手册页。

    编辑: SystemSession() 而不是 SessionBus()

    2 回复  |  直到 14 年前
        1
  •  2
  •   Mew    14 年前

    你可以试着用 DFeet

        2
  •  1
  •   Guilherme Salgado    14 年前

    下面的方法对我有效,但是我没有看到您使用的ListNames方法,所以我使用了枚举设备。

    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')()