首页 > 解决方案 > Python DBus 返回空列表

问题描述

我有一个返回字符串列表的 Python 2.7 DBus 方法。该方法在列表不为空时有效。当它为空时,会引发异常,指出“无法从空列表中猜测签名”。

这是方法:

@dbus.service.method('blecnx.comp.com.control', signature='as')
def getSlaveList(self):
    global connectedSlaves
    print("Interface:getSlaveList() getSlaveList called - length is: %s" % (len(connectedSlaves)))
    if len(connectedSlaves) == 0:
        return dbus.Array(dbus.Array([], signature='as'))
    else:
        return connectedSlaves

这是一个例外:

ERROR:dbus.service:Unable to guess signature for arguments (dbus.Array([], signature=None),): <type 'exceptions.ValueError'>: Unable to guess signature from an empty list

我试图更新 DBus 方法的签名以明确声明它是一个字符串数组,但它没有帮助。

如何确保该方法不会引发空列表异常?谢谢。

标签: linuxpython-2.7dbus

解决方案


原来你不能只指定“signature='as'”——它必须是“out_signature='as'”。

现在它起作用了。


推荐阅读