从python调用时,udisks FilesystemUnmount似乎不存在

时间:2012-11-14 19:47:15

标签: python dbus

我正在尝试卸载使用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

1 个答案:

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