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 に答える