3

我正在尝试卸载使用 FilesystemMount 安装的文件系统,但我不断收到 UnknownMethod 异常。我已经验证我可以通过 D-Feet 调用 Device 接口上的方法,但是尝试直接通过 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 回答