如何将BlobProperty从我的模型输出到十六进制字符串

时间:2012-11-18 00:54:23

标签: python google-app-engine google-cloud-datastore blob

我有这个类代表我的模型:

from google.appengine.ext import db

class PuzzleSets(db.Model):
   img = db.BlobProperty(required=True)
   ...

我想要检索那个blobproperty。但是,我想检索bytes数组并将其输出到字符串。防爆。 :“AE214FAA21617772”,用于存储在我的blob中的8字节图像。

我尝试使用blob_reader和其他一些方法,但我总是得到像

这样的错误

UnicodeDecodeError:'utf8'编解码器无法解码位置0的字节0x89:无效的起始字节

hex()参数不能转换为十六进制

任何人都可以帮我找到正确的方法吗? 谢谢!

3 个答案:

答案 0 :(得分:1)

Blobreader用于从BlobStore读取。 要使用BlobProperty /获取字符串,请使用:

data = db.Blob(puzzleset_instance.img)

如果您的blob包含文本,请使用:

unicode_data = db.Blob(instance.blob_property).decode('utf-8')

答案 1 :(得分:0)

我终于通过这个流畅的代码获得了我想要的东西:

self.response.out.write(''.join([hex(z)[2:].zfill(2) for z in bytearray(puzzleset_instance.img)]))

答案 2 :(得分:0)

您可以使用foo.encode('hex')以十六进制编码str实例。