python数据序列化---json & pickle

json & pickle数据序列化

序列化: 就是列表,字典等数据类型转乘字符串存入文本文件
 反序列: 就是字符串从文本读出来后通过一种方法转化为列表,字典等数据类型。例如eval()

json通用的:只能处理一些简单的数据类型:
json:
 序列化和反序列化函数:
 案例1:
  import json
  info = {
   "name": "brace",
   "age": 22,
  }
  json_str = json.dumps(info)       #序列化为字符类型
  print(type(json_str), json_str)
  data = json.loads(json_str)       #反序列化为字典类型
  print(type(data), data)
  输出:
  <class ‘str‘> {"name": "brace", "age": 22}
  <class ‘dict‘> {‘name‘: ‘brace‘, ‘age‘: 22}
  
 案例2:
  import json
  info = {
   "name": "brace",
   "age": 22,
  }
  
  with open("data", "w") as fs1:
   json.dump(info, fs1)      #可以直接序列化后执行文件存储;
  
  with open("data", "r") as fs2:
   data = json.load(fs2)      #可以直接执行文件读取后反序列化;
   print(type(data), data)

输出:
  <class ‘dict‘> {‘name‘: ‘brace‘, ‘age‘: 22}
  
  
 案列3:
  import json
  a = {5:1,9:2,1:3,8:4,3:9}
  with open("data.txt","w") as fs1:
   fs1.write(json.dumps(a))     #序列化存储
   fs1.flush()
  
  with open("data.txt","r") as fs2:
   data = json.loads(fs2.read())    #读取后反序列化
  print(data)
  
  {‘5‘: 1, ‘9‘: 2, ‘1‘: 3, ‘8‘: 4, ‘3‘: 9}
 
 
pickle:只能在python中使用:
 可以执行一些稍复杂的序列化和反序列化
 
 案例 1:
 import pickle
 def sayHi(name):
  print("hello %s" %name)
 
 info = {
  "name": "brace",
  "age": 22,
  "func": sayHi
 }
 
 with open("data.txt","wb") as fs1:
  fs1.write(pickle.dumps(info))     #pickle.dumps() 转化的时二进制类型。所以必须用wb来存储
  fs1.flush()
 
 with open("data.txt","rb") as fs2:     #pickle.loads() 读取2进制数据后进行反序列化
  data = pickle.loads(fs2.read())     
 print(data)
 
 输出:
 {‘name‘: ‘brace‘, ‘age‘: 22, ‘func‘: <function sayHi at 0x02F6BA08>}
 
 
 案例2:
 pickle的dump和load的方法:和上面的功能时一样的,但可以直接文件操作
 
 
 import pickle
 def sayHi(name):
  print("hello %s" %name)
 
 info = {
  "name": "brace",
  "age": 22,
  "func": sayHi
 }
 
 with open("data.txt","wb") as fs1:
  pickle.dump(info, fs1)      #可以直接序列化后执行文件存储;
 
 with open("data.txt","rb") as fs2:
  data=pickle.load(fs2)      #可以直接执行文件读取后反序列化;
 print(data)
 
 输出:
 {‘name‘: ‘brace‘, ‘age‘: 22, ‘func‘: <function sayHi at 0x02F6BA08>}

原文地址:https://www.cnblogs.com/brace2011/p/9194079.html

时间: 2024-10-14 01:26:37

python数据序列化---json & pickle的相关文章

python 序列化 json pickle

python的pickle模块实现了基本的数据序列和反序列化.通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储:通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象. 基本接口: pickle.dump(obj, file, [,protocol]) 注解:将对象obj保存到文件file中去. protocol为序列化使用的协议版本,0:ASCII协议,所序列化的对象使用可打印的ASCII码表示:1:老式的二进制协议:2:2.3版本引

python 之序列化(pickle模块和json模块)

#!/usr/bin/env python # -*- coding: utf-8 -*- ''' 序列化(pickle)和json 1.什么是序列化? 序列化可以把一个对象(比如列表.字典都是对象),通过python特有的机制序列化一下. 也就是当作是以二进制的形式给它加密一下(特殊二进制的方式加密一下),这个过程就是序列化 并且对一个对象序列化(比如类.列表.字典)之后,可以进行反序列化. ''' import pickle,json li = ['tantianran',11,22,'ok

python 模块 - 序列化 json 和 pickle

1,引入 之前我们学习过用eval内置方法可以将一个字符串转成python对象,不过,eval方法是有局限性的,对于普通的数据类型,json.loads和eval都能用,但遇到特殊类型的时候,eval就不管用了,所以eval的重点还是通常用来执行一个字符串表达式,并返回表达式的值. import json x = "[nuaa,true,dalse,1]" # print(eval(x)) # 报错,无法解析null类型,而json就可以 print(json.dumps(x)) #

Day 4-5 序列化 json &amp; pickle

序列化: 序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes. 反序列化: 把字符转成内存里的数据类型. 用于序列化的两个模块.他们的使用方法完全一样. json,用于字符串 和 python数据类型间进行转换 pickle,用于python特有的类型 和 python的数据类型间进行转换 Json模块提供了四个功能:dumps.dump.loads.load pickle模块提供了四个功能:dumps.dump.loads.

Python常用模块——json,pickle模块

什么是序列化? 序列化是指把内存里的数据类型转变成字符串,使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接收bytes. 为什么要序列化? 我们编写的程序,会涉及到各种各样的对象.数据结构,它们通常是以变量的形式在内存中存在着.当程序运行结束后,这些变量也就会被清理.但我们有时希望能够在下一次编写程序时恢复上一次的某个对象(如机器学习中的到结果,需要程序运行较长时间,多次运行时间成本太大),这就需要我们将变量进行持久化的存储.一种方式是利用文件读写的方式将变量转化为某种形式的字符

模块 序列化 json pickle shelv xml

序列化 序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes. json 模块 json.dump(d,f) json.load(f) #与文件得交互 dump(可多次,但不那样做) load(只可一次) 把数据类型转成字符串存到内存里得意义? json.dumps(data) json.loads(q) #与内存得交互 1.把内存数据 通过网络 共享给远程其他人 必须:bytes 2.定义了不同语言之间得交互规则 2.1 纯文

Python基础语法 - json &amp; pickle

情景 例1 dic = str({'age':'18'}) f = open('text','w') f.write(dic) f.close() 例2 f = open('text','r') data = f.read() print(eval(data)['age']) 当我们将内存数据对象存储到文件中,是无法直接将字典对象存储,必须转化为字符串格式str(),当我们通过f.read()方法读取文件中存储的字典格式对象时,读取的也是字符串个是,必须用eval()方法转化,这种方法很Lou.

4 Apr 18 软件开发目录 logging模块的使用 序列化(Json, Pickle) os模块

4 Apr 18 上节课复习:函数在一个程序内被使用,模块可以被几个程序共享使用 一.软件开发目录 confàsettings.py core(主要逻辑)àsrc.py dbàdb.txt lib(库)àcommon.py bin(入口,启动)àstart.py logàaccess.log readme(说明书)   二.logging模块的使用 日志分为五个级别:debug 10, info 20, warning 30, error 40, critical 50 若日志级别设为10,包括

python对象序列化之pickle

本片文章主要是对pickle官网的阅读记录. The pickle module implements binary protocols for serializing and de-serializing a Python object structure. "Pickling" is the process whereby a Python object hierarchy is converted into a byte stream, and "unpickling&