python之~ 序列化与反序列化

sy1.proto文件

复制代码
复制代码
syntax = "proto2";
message stuff
{
required int32 stuff_ID = 1;
required string stuff_Name = 2;
optional int32 stuff_Num = 3;

}
复制代码
复制代码

利用编译器转化成sy1_pb2.py文件

复制代码
复制代码
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: sy1.proto

import sys
_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
from google.protobuf import symbol_database as _symbol_database
from google.protobuf import descriptor_pb2
# @@protoc_insertion_point(imports)

_sym_db = _symbol_database.Default()




DESCRIPTOR = _descriptor.FileDescriptor(
  name='sy1.proto',
  package='',
  serialized_pb=_b('\n\tsy1.proto\"@\n\x05stuff\x12\x10\n\x08stuff_ID\x18\x01 \x02(\x05\x12\x12\n\nstuff_Name\x18\x02 \x02(\t\x12\x11\n\tstuff_Num\x18\x03 \x01(\x05')
)
_sym_db.RegisterFileDescriptor(DESCRIPTOR)




_STUFF = _descriptor.Descriptor(
  name='stuff',
  full_name='stuff',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='stuff_ID', full_name='stuff.stuff_ID', index=0,
      number=1, type=5, cpp_type=1, label=2,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='stuff_Name', full_name='stuff.stuff_Name', index=1,
      number=2, type=9, cpp_type=9, label=2,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='stuff_Num', full_name='stuff.stuff_Num', index=2,
      number=3, type=5, cpp_type=1, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=13,
  serialized_end=77,
)

DESCRIPTOR.message_types_by_name['stuff'] = _STUFF

stuff = _reflection.GeneratedProtocolMessageType('stuff', (_message.Message,), dict(
  DESCRIPTOR = _STUFF,
  __module__ = 'sy1_pb2'
  # @@protoc_insertion_point(class_scope:stuff)
  ))
_sym_db.RegisterMessage(stuff)


# @@protoc_insertion_point(module_scope)
复制代码
复制代码

 

写文件.py

复制代码
复制代码
import sys
import sy1_pb2


stuff1 = sy1_pb2.stuff()

#stuff1.stuff_ID=1001
stuff1.stuff_ID=int(input("请输入商品编号:"))
#stuff1.stuff_Name='book'
stuff1.stuff_Name=input("请输入商品名称:")
#stuff1.stuff_Num=30
stuff1.stuff_Num=int(input("请输入库存:"))
#print(stuff)

#反序列化
#stuff_unserial =stuff1.ParseFromString()

#序列化
#stuff_serial = stuff1.SerializeToString()

print('-------------')

with open("sy1.txt",'wb')as f:
    f.write(stuff1.SerializeToString())
    print("添加成功!")
复制代码
复制代码

读文件.py

复制代码
复制代码
import sys
import sy1_pb2

stuff1 = sy1_pb2.stuff()

with open("sy1.txt",'rb')as f:
   stuff1.ParseFromString(f.read())


print(stuff1)
print("读取成功!")
复制代码
复制代码

 

posted on   &大飞  阅读(427)  评论(0编辑  收藏  举报

编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示