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("讀取成功!")

 

怎么樣,484很簡單~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM