Есть ли способ использовать кодировку python, чтобы сообщения о сбоях xmlrpc показывались на стороне клиента с правильным CR?

На стороне сервера xmlrpc сервер в Python У меня есть следующая строка кода в функции перезаписи 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 ответ

Решение

Вы смотрите на представление Fault объект; само строковое сообщение содержится в .faultString атрибут:

print fault.faultString

__repr__ в противном случае класс Fault представляет это значение, используя 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
Другие вопросы по тегам