python之~ 序列化与反序列化
sy1.proto文件
syntax = "proto2";
message stuff
{
required int32 stuff_ID = ;
required string stuff_Name = ;
optional int32 stuff_Num = ; }
利用编译器转化成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很简单~
python之~ 序列化与反序列化的更多相关文章
- python的序列化和反序列化以及json
python 的序列化和反序列化用于内存之间的共享,包括服务器和客户端的共享,两个Python程序之间的共享,以及以字符串的形式存储到硬盘中. pyhton 的pickle 可以对Python的各种数 ...
- python json序列化与反序列化操作
python json序列化与反序列化操作 # dumps() dict-->str 序列化 # loads() str---dict 反序列化 result1 = json.dumps({'a ...
- python 的序列化和反序列化
什么是序列化?简单来说就是将数据存储到物理内存上的过程叫序列化. 什么是反序列化?将数据从物理内存存储到程序内存的过程叫做反序列化. 下面来看一下python中使用json进行序列化和反序列化的实例d ...
- Python Json序列化与反序列化
在python中,序列化可以理解为:把python的对象编码转换为json格式的字符串,反序列化可以理解为:把json格式字符串解码为python数据对象.在python的标准库中,专门提供了json ...
- python 之 序列化与反序列化、os模块
6.6 序列化与反序列化 特殊的字符串 , 只有:int / str / list / dict 最外层必须是列表或字典,如果包含字符串,必须是双引号"". 序列化:将Python ...
- python:序列化与反序列化(json、pickle、shelve)
本节内容 前言 json模块 pickle模块 shelve模块 总结 一.前言 1. 现实需求 每种编程语言都有各自的数据类型,其中面向对象的编程语言还允许开发者自定义数据类型(如:自定义类),Py ...
- python的序列化与反序列化
------------------------------------------------------------------- 文件的序列化与反序列化:
- 【python】序列化和反序列化
序列化可以理解为:把python的对象编码转换为json格式的字符串,反序列化可以理解为:把json格式字符串解码为python数据对象.在python的标准库中,专门提供了json库与pickle库 ...
- Python的序列化和反序列化
序列化是将dict---->str 反序列化是将str---->dict import jsonresult1 = json.dumps({'a': 1, 'b': 2}) #序列化res ...
随机推荐
- Python之列表生成式、生成器、可迭代对象与迭代器
本节内容 语法糖的概念 列表生成式 生成器(Generator) 可迭代对象(Iterable) 迭代器(Iterator) Iterable.Iterator与Generator之间的关系 一.语法 ...
- 用php 进行对文件的操作 (上)
如何让自己磁盘中的文件夹和目录显示在网页上?那就来看一下,用php是怎么来操作他们的吧 php中文件,一般包含两块内容,文件和目录 先来一句一句的看代码,及他的作用 运行后看一下结果 file 指的是 ...
- 用linux 命令 执行ci框架的方法
最近要跑一个数据量比较大的脚本,刚开始在浏览器页面访问发行nginx 5.4 超时, 又不想去修改nginx的连接时间,只能在服务器执行了, 执行方法:进入到ci 的根目录:#php index.ph ...
- (三)Python在windows上安装
1.安装2.7--进入python官网(网址百度)下载python2.7 和python3.6(很小,2个程序后缀不一样?)2.安装到c:\python----next----advanced不动-- ...
- Http中的Get/Post方法
这篇文章源自http://www.cnblogs.com/hyddd/archive/2009/03/31/1426026.html Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是G ...
- svn 常用控制台命令解析
参数说明 :serverPath:表示服务器的文件路径 , localPath:表示本地的文件路径 , num 表示数字 , edition1:表示工程已经跟新的版本1 , edition2:表示 ...
- Java 四舍五入并小数点后保存两位,千分位分隔
import java.text.DecimalFormat; public class FileTest { public static void main(String[] args) { ...
- Linux中一些简单命令(一)
1.查看当前用户:who 2.显示当前目录:pwd 3.查看当前服务器的时间:date 4.查看日历:cal+year; 例如:cal 2016 5.计算器:bc 退出计算器:quit或者ctrl+ ...
- Html5浏览器端less应用
之前的一个布局是用rem来做的 我上一段代码 div { margin: 0.833333333rem 0; } /* 去处a标签的下划线*/ a { text-decoration: none; } ...
- 前端知识点-CSS相关知识点
1.解释一下CSS的盒子模型? 回答一: a.标准的css盒子模型:宽度=内容的宽度+边框的宽度+加上内边具的宽度 b.网页设计中常听的属性名:内容(content).填充(padding).边框(b ...