有没有办法使用Python编码,使XML-RPC故障消息在客户端正确显示换行?
在一个用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
">
也就是说,换行符实际上是“被使用”的,而不是直接打印出来。
有没有什么办法可以实现这个(在服务器端,也就是修改刚才提到的那行代码,并且不使用第三方包)?
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