zoukankan      html  css  js  c++  java
  • 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('
    	sy1.proto"@
    x05stuffx12x10
    x08stuff_IDx18x01 x02(x05x12x12
    
    stuff_Namex18x02 x02(	x12x11
    	stuff_Numx18x03 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很简单~

  • 相关阅读:
    Shell学习(八)——dd命令
    PLSQL导出oracle表结构和数据
    如何让Linux 机器CPU使用率变高
    WebService学习总览
    Java发HTTP POST请求(内容为xml格式)
    Oracle—回车、换行符
    Oracle—merge into语法
    Apache解析和绑定域名
    MySQL根据经纬度按距离排序
    jquery监听input
  • 原文地址:https://www.cnblogs.com/pheobe/p/5761130.html
Copyright © 2011-2022 走看看