python的pickle模块实现了基本的数据序列和反序列化。

通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储;

通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象。

基本接口:

pickle.dump(obj, file, [,protocol])
注解:将对象obj保存到文件file中去。
   protocol为序列化使用的协议版本,0:ASCII协议,所序列化的对象使用可打印的ASCII码表示;
   1:老式的二进制协议;2:2.3版本引入的新二进制协议,较以前的更高效。其中协议0和1兼容老版本的python。protocol默认值为0。
   file:对象保存到的类文件对象。file必须有write()接口, file可以是一个以’w’方式打开的文件或者一个StringIO对象或者其他任何实现write()接口的对象。如果protocol>=1,文件对象需要是二进制模式打开的。

pickle.load(file)

注解:从file中读取一个字符串,并将它重构为原来的python对象。
   file:类文件对象,有read()和readline()接口。

举例说明

 1 import pickle
2
3 b=7
4 i=13000000
5 fa=99.056
6 s='中国人民 123abc'
7 lst=[[1,2,3],[4,5,6],[7,8,9]]
8 tu=(-5,10,8)
9 coll={4,5,6}
10 dic={'a':'apple','b':'banana','g':'grape','o':'orange'}
11 f=open('sample_pickle.dat','wb') #以写模式打开二进制文件
12 try:
13 pickle.dump(b,f) #对象个数
14 pickle.dump(i,f) #写入整数
15 pickle.dump(fa,f) #写入字符串
16 pickle.dump(s,f) #写入浮点数
17 pickle.dump(lst,f) #写入列表
18 pickle.dump(tu,f) #写入元组
19 pickle.dump(coll,f) #写入集合
20 pickle.dump(dic,f) #写入字典
21 except:
22 print('写文件异常')
23 finally:
24 f.close()
25
26 '''
27 使用pickle模块读取'sample_pickle.dat'内的二进制内容
28 '''
29 f=open('sample_pickle.dat','rb')
30 n=pickle.load(f) #读出文件的数据个数
31 for i in range(n):
32 x=pickle.load(f)
33 print(x)
34 f.close()
35
36 '''输出
37 13000000
38 99.056
39 中国人民 123abc
40 [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
41 (-5, 10, 8)
42 {4, 5, 6}
43 {'a': 'apple', 'b': 'banana', 'g': 'grape', 'o': 'orange'}
44 '''

最新文章

  1. SpringMVC整合Hibernate实现增删改查之按条件查询
  2. ycsb-命令及参数-与生成的负载类型相关
  3. 自动化测试工具Selenium和QTP的比较
  4. [转] Linux文件系统之hard link&symbol link
  5. Caesar cipher
  6. linux常用脚本
  7. jQuery中$.each()方法(遍历)
  8. JavaScript关于sha1加密
  9. 洛谷P4630 [APIO2018]铁人两项 [广义圆方树]
  10. TensorFlow 算术运算符
  11. 【Java基础】2、Java中普通代码块,构造代码块,静态代码块区别及代码示例
  12. 使用命令行编译QT helloworld 项目
  13. Linux下线程同步的几种方法
  14. C/C++/Objective-C经典书籍推荐
  15. PowerDesigner 同名问题解决 Entity Attribute name uniqueness
  16. 笔记六:python字符串运算与函数
  17. dedecms为导航栏目添加英文标题
  18. 【SAP BI】BW如何连接SQLSERVER数据库
  19. 学生导师互选系统(php代码规范)
  20. MySQL索引基础知识点

热门文章

  1. Java 中 && 和 & 的区别
  2. 小程序开发之后台SSM环境搭建(一)
  3. XML -- XML基础知识
  4. nagios监控部署
  5. [CSP-S模拟测试]:二叉搜索树(DP+贪心)
  6. JDK动态代理、CGLIB动态代理详解
  7. leetcode题目10.正则表达式匹配(困难)
  8. idea如果发生@override is not allowed when implement 错误,可以在Project Structure-Modules中更改Language level,设置为6以上的。
  9. Backen-Development record 1
  10. 解释HTTP中Get和Post。它们有什么区别,哪个使用时更加安全?