【问题标题】:udisks FilesystemUnmount appears to not exist when calling from python从 python 调用时,udisks FilesystemUnmount 似乎不存在
【发布时间】:2012-11-14 19:47:14
【问题描述】:

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

【问题讨论】:

    标签: python dbus


    【解决方案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('')
    

    【讨论】:

      猜你喜欢
      • 2011-06-16
      • 2017-12-31
      • 1970-01-01
      • 2013-02-11
      • 2017-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多