3

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

udisk-demon マンページから

udisks-daemon は、システム メッセージ バスで org.freedesktop.UDisks サービスを提供します。このデーモンは、アプリケーションが org.freedesktop.UDisks サービスを呼び出すたびに dbus-daemon(1) によって自動的に開始されるため、ユーザーまたは管理者が開始する必要はありません。udisks-daemon の動作をカスタマイズする方法については、udisks(7) の man ページを参照してください。

編集:そうSystemSession()でしたSessionBus()

4

2 に答える 2

2

DFeetを使用して、この dbus オブジェクトが実際に存在するかどうかを確認できます。

于 2010-11-10T09:01:06.250 に答える
1

以下は私にとってはうまくいきましたが、使用した ListNames メソッドが表示されないため、EnumerateDevices を使用しました。

インポート dbus
バス = dbus.SystemBus()
udisks = bus.get_object("org.freedesktop.UDisks", "/org/freedesktop/UDisks")
udisks = dbus.Interface(udisks, 'org.freedesktop.UDisks')
デバイス = udisks.get_dbus_method('EnumerateDevices')()
于 2010-12-09T15:48:52.143 に答える