从Python调用udisks FilesystemUnmount时似乎不存在

3
我正在尝试卸载使用FilesystemMount挂载的文件系统,但是我不断收到UnknownMethod异常。我已经通过D-Feet验证可以通过Device接口调用该方法,但是直接通过dbus尝试似乎根本不起作用。我尝试使用以下参数:
  • ''
  • None
  • []
  • ['']
下面的代码演示了这个问题:
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: 接口 "org.freedesktop.UDisks.Device" 上的方法 "FilesystemUmount",签名为 "as",不存在

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('')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接