我正在尝试卸载我使用FilesystemMount挂载的文件系统,但是我一直得到UnknownMethod异常。我已经验证了我可以通过D英尺在设备接口上调用这个方法,但是试图通过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
发布于 2012-11-14 20:22:11
事实证明,问题是FilesystemUnmount只会使用udisk发出的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('')https://stackoverflow.com/questions/13386180
复制相似问题