2015-10-21 41 views
5

Bir dosya okunurken aldığım bir bayt dizgisini bir dizeye dönüştürmenin mümkün olup olmadığını merak ediyorum (type(output) == str). Şu ana kadar Google'da bulduğum her şey, python 2'de çalışacak gibi görünen How do you base-64 encode a PNG image for use in a data-uri in a CSS file? gibi yanıtlar olmuştur (eğer yanılmıyorsam, dizeler zaten bayt dizgileriydi) ama python'da çalışmıyor. 3.4 artık.Base64 kodlu dizeye byte dizgisi dönüştür (çıktı bir bayt dizgisi değil)

Ben normal dizeye bu sonuçlanan bayt dizesi dönüştürmek istediğiniz sebebi JSON nesnesi içinde saklamak için bu base64 ile kodlanmış veriyi kullanmak istediğiniz, ancak benzer bir hata almaya devam:

TypeError: b'Zm9v' is not JSON serializable 

burada yanlış gittiği yerlerin az örnek:

import base64 
import json 
data = b'foo' 
myObj = [base64.b64encode(data)] 
json_str = json.dumps(myObj) 

Yani benim soru: tip str bir nesneye tip bytes bu nesneyi dönüştürmek için bir yol yoktur hala base64-kodlama (böylece tutarken bu örnekte, ["Zm9v"] olması sonucunu verir. Mümkün mü?

cevap

6

bir dizeye dönüştürmek için

data = b'foo'.decode('UTF-8') 

yerine

data = b'foo' 

deneyin.

+0

Ah işe yaramış gibi görünüyor. Çok teşekkürler! – Joeytje50