XMLRPC Newpaste - Erwartete ein Objekt mit der Pufferschnittstelle
-
25-10-2019 - |
Frage
In PY2 gab es
rv = xmlrpc.pastes.newPaste(language, code, None, filename, mimetype, private)
Ich erhalte Fehler: Erwartete ein Objekt mit der Pufferschnittstelle
Sie können keine Dokumente über XMLRPC und PY3 finden. Ich habe nur diesen Ausschnitt gefunden:
p1 = subprocess.Popen(['gpg','--clearsign'], stdin = subprocess.PIPE, stdout=subprocess.PIPE)
p1.stdin.write(bytes(input, 'UTF8'))
output = p1.communicate()[0]
s = ServerProxy('http://paste.pocoo.org/xmlrpc/')
pasteid = s.pastes.newPaste('text',output.decode())
print ("http://paste.pocoo.org/raw/",pasteid,"/", sep="")
Aber ich bin immer noch verwirrt darüber ... meine Version verwendete viele Argumente, wo kann ich eine vollständige Beschreibung davon finden / Fix dafür?
Vielen Dank.
Lösung
Diese Fehlermeldung bedeutet normalerweise, dass sie nach sucht str
(Das ist Unicode in Python 3), nicht bytes
. Wie im Beispiel müssen Sie das Argument in Bytes dekodieren. Vielleicht:
rv = xmlrpc.pastes.newPaste(language, code.decode(), None, filename, mimetype, private)
Aber es ist schwer zu sagen, was das Problem ist, ohne Ihren Code zu sehen.
Andere Tipps
In Python 3. xmlrpclib
wurde in zwei Module aufgeteilt, xmlrpc.client
und xmlrpc.server
.
Die Dokumente für 3.2.1 finden Sie unter:
http://docs.python.org/release/3.2.1/library/xmlrpc.client.html
http://docs.python.org/release/3.2.1/library/xmlrpc.server.html