2014-11-26 13 views
5
im = Image.open(filePath)      # load image 
self.msg = str(bytearray(list(im.getdata()))) # convert image data to string 
encodedMsg = base64.b64encode(self.msg) 

wenn ich die Daten aus einem Bild zu base64 lesen zu kodieren versuche, gibt es eine Fehlermeldung:wenn convert 64 zu stützen, Typeerror: ‚str‘ unterstützt nicht die Puffer-Schnittstelle

File "Steganography.py", line 42, in msgToXml 
    encodedMsg = base64.b64encode(self.msg) 
    File "/opt/python3/current/lib/python3.4/base64.py", line 62, in b64encode 
    encoded = binascii.b2a_base64(s)[:-1] 
TypeError: 'str' does not support the buffer interface 

Es funktioniert, wenn ich mit Ubuntu zuhause bin (Python 2.7). Aber es zeigt Fehler, wenn ich Schulmaschine (python3.4) benutze. Wie kann ich das lösen?

Antwort

0

Kurz gesagt, es liegt daran, dass in Python3 eine Generalüberholung der Unicode/string/Bytes System war. Sie sollten diese https://docs.python.org/3.0/whatsnew/3.0.html#text-vs-data-instead-of-unicode-vs-8-bit und diese https://docs.python.org/3.3/howto/unicode.html lesen, um zu verstehen, was passiert ist und wie man damit umgeht.

Um Ihr spezifisches Problem zu beantworten - wenn Sie nicht Ihr Bytearray in Str konvertieren, sollte alles funktionieren.

+0

Ich lese einige Daten aus XML-Datei. Dieser Code 'self.msg = base64.b64decode (self.xml.encode ('utf-8'))' gibt 'Datei" /opt/python3/current/lib/python3.4/base64.py ", Zeile 90, zurück. in b64decode Rückgabe binascii.a2b_base64 (s) binascii.Error: Falsches Auffüllen ' – BadEggX

Verwandte Themen