1 回答

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超9個(gè)贊
我不知道什么系統(tǒng)將讀取你的文件,所以我不能說你應(yīng)該如何將它寫入文件。這實(shí)際上取決于模型服務(wù)器期望如何讀取它。
也就是說,我沒有發(fā)現(xiàn)您創(chuàng)建消息的方式或您展示的任何序列化方法有任何問題。
該
print
方法顯示了一個(gè)“文本格式”proto,有利于調(diào)試,有時(shí)用于存儲配置文件。它不是很緊湊(字段名稱存在于文件中)并且不具有二進(jìn)制表示的所有向后和向前兼容的功能。它實(shí)際上在功能上與您所說的“應(yīng)該看起來像”相同:冒號和逗號實(shí)際上是可選的。該
SerializeToString()
方法使用二進(jìn)制序列化格式。這可以說是 Protocol Buffers 的構(gòu)建目的。它是一種緊湊的表示形式,并提供向后和向前的兼容性,但人類可讀性不高。顧名思義,該
json_format
模塊提供消息的 JSON 表示形式。如果您正在與之交互的系統(tǒng)需要 JSON,那就太好了,但這并不常見。
附錄:不使用print()
,該google.protobuf.text_format
模塊具有更適合以編程方式使用文本格式的實(shí)用程序。要寫入文件,您可以使用:
from google.protobuf import text_format
(...)
with open(file_path, 'w') as output:
? text_format.PrintMessage(my_message, output)
添加回答
舉報(bào)