0

在 python 中服务器的服务器端,xmlrpc我在函数覆盖中有以下代码行SimpleXMLRPCServer._marshaled_dispatch

response = xmlrpclib.dumps(
            xmlrpclib.Fault(1, "some error\nnext line\n"),
            encoding=self.encoding, allow_none=self.allow_none)

创建一些自定义错误/故障消息以在客户端显示。但是,此代码将在客户端显示类似以下内容

xmlrpclib.Fault: <Fault 1: "some error\nnext line\n">

而我想要类似的东西

xmlrpclib.Fault: <Fault 1: "some error
next line
">

即换行符实际上是“使用”而不是打印的。

我能做到这一点的任何想法(每个服务器端,即修改上面显示的行,并且不使用第三方包。)?

4

1 回答 1

1

您正在查看Fault对象的表示;字符串消息本身包含在.faultString属性中:

print fault.faultString

Fault 类的否则使用;__repr__表示该值。repr()如果不更改xmlrpclib.Fault类本身(通过替换它的__repr__方法或__str__向其添加方法),您将无法解决这个问题。

您可以将其修补到课程中:

from xmlrpclib import Fault

def fault_repr(self):
    return "<Fault %s: %s>" % (self.faultCode, self.faultString)

Fault.__repr__ = fault_repr
于 2013-01-24T09:30:14.753 回答