我正在尝试卸载使用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
答案 0 :(得分: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('')