Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有一种方法可以使用python编码,以便在客户端以正确的CR显示xmlrpc错误消息?_Python_Python 2.7_Xml Rpc_Xmlrpclib - Fatal编程技术网

有没有一种方法可以使用python编码,以便在客户端以正确的CR显示xmlrpc错误消息?

有没有一种方法可以使用python编码,以便在客户端以正确的CR显示xmlrpc错误消息?,python,python-2.7,xml-rpc,xmlrpclib,Python,Python 2.7,Xml Rpc,Xmlrpclib,在python中的xmlrpc服务器的服务器端,我在覆盖SimpleXMLRPCServer的函数中有以下代码行 response = xmlrpclib.dumps( xmlrpclib.Fault(1, "some error\nnext line\n"), encoding=self.encoding, allow_none=self.allow_none) 创建要在客户端显示的自定义错误/故障消息。但是,此代码将在客户端显示如下内容 xm

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

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:
而我想要的是

xmlrpclib.Fault: <Fault 1: "some error
next line
">
xmlrpclib.Fault:
i、 e.换行符实际已“使用”且未打印


我有什么想法可以做到这一点(每个服务器端,即在不使用第三方软件包的情况下修改上面显示的行。)?

您看到的是
故障
对象的表示;字符串消息本身包含在
.faultString
属性中:

print fault.faultString
Fault类的
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;如果不更改
xmlrpclib.Fault
类本身(通过替换它的
\uuu repr\uuu
方法或向它添加
\uu str\uuu
方法),就无法解决这个问题

您可以将其添加到类中:

from xmlrpclib import Fault

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

Fault.__repr__ = fault_repr
来自xmlrpclib导入错误
def故障报告(自身):
返回“”%(self.faultCode,self.faultString)
故障。_repr__=故障_repr

当然可以,但问题是我无法在客户端使用您的建议,除非我将所有代码放在
try..except
子句中以正确处理消息。另一种方法是覆盖
xmlrpclib.ServerProxy
中的某个方法,该方法处理
xmlrpc
故障的打印。也许你知道该使用哪种方法?好的,我想我只需要在客户端用你的建议覆盖xmlrpclib.Fault方法(或者实际上只使用
\uuu repr\uuu
方法。)@Alex:在快速检查
xmlrpclib
代码后更新。您必须使用
faultString
值。您似乎忘记了原始答案中的
.decode('string\u escape')
功能。应该添加它以获得此问题的有效答案。@Alex:这取决于faultstring值本身;您的帖子表明错误字符串本身没有转义,否则在打印错误
repr()
时将以双转义结束。在这种情况下,解码replacement
repr()
中的字符串不会起任何作用。