3

FilesystemMountを使用してマウントしたファイルシステムをアンマウントしようとしていますが、UnknownMethodの例外が発生し続けます。D-Feetを介してデバイスインターフェイスでメソッドを呼び出すことができることを確認しましたが、dbusを介して直接実行しようとしてもまったく機能しないようです。私は次の引数を使用してみました:

  • ''
  • なし
  • []
  • ['']

次のコードは問題を示しています。

import dbus

bus = dbus.SystemBus()
proxy = bus.get_object('org.freedesktop.UDisks', '/dev/fd0')
dev = dbus.Interface(proxy, 'org.freedesktop.UDisks.Device')
dev.FilesystemUnmount(['force'])

例外:

dbus.exceptions.DBusException: org.freedesktop.DBus.Error.UnknownMethod: Method "FilesystemUmount" with signature "as" on interface "org.freedesktop.UDisks.Device" doesn't exist

4

1 に答える 1

1

問題は、FilesystemUnmountがudisksから渡されたObjectPathのみを取得することです。そのため、チェックを追加して調べてみると、動作するようになりました。以下のコードを参照してください。

import dbus

path = '/dev/fd0'

bus = dbus.SystemBus()

if not isinstance(path, dbus.ObjectPath):
    manager_obj = bus.get_object('org.freedesktop.UDisks',
                                 '/org/freedesktop/UDisks')
    manager = dbus.Interface(manager_obj, 'org.freedesktop.UDisks')
    path = manager.FindDeviceByDeviceFile(path)

proxy = bus.get_object('org.freedesktop.UDisks', path)
dev = dbus.Interface(proxy, 'org.freedesktop.UDisks.Device')
dev.FilesystemUnmount('')
于 2012-11-14T20:22:11.867 に答える