pickle及cPickle模块

pickle 模块及其同类模块 cPickle 向 Python 提供了 pickle 支持。后者是用 C 编码的,它具有更好的性能;

pickle 模块提供了以下函数对: dumps(object) 返回一个字符串,它包含一个 pickle 格式的对象; loads(string) 返回包含在 pickle 字符串中的对象;

实例1:
#!/usr/bin/python

import cPickle as pickle

a1 = ('this is a string', 34, [2,3,4],None)

s1 = pickle.dumps(a1)
print s1

o1 = pickle.loads(s1)
print o1

print "*********************"

s11 = pickle.dumps(a1, True)
print s11

o11 = pickle.loads(s11)
print o11

输出结果为:

(S'this is a string'
p1
I34
(lp2
I2
aI3
aI4
aNtp3
.
('this is a string', 34, [2, 3, 4], None)
*********************
(Uthis is a stringqK"]q(KKKeNtq.
('this is a string', 34, [2, 3, 4], None)

输出的二进制可能有写乱码;


dump(object, file) 将对象写到文件,这个文件可以是实际的物理文件,但也可以是任何类似于文件的对象,这个对象具有 write() 方法,可以接受单个的字符串参数; load(file) 返回包含在 pickle 文件中的对象。缺省情况下, dumps() 和 dump() 使用可打印的 ASCII 表示来创建 pickle。两者都有一个 final 参数(可选),如果为 True ,则该参数指定用更快以及更小的二进制表示来创建 pickle。 loads() 和 load() 函数自动检测 pickle 是二进制格式还是文本格式。
实例2:
#!/usr/bin/python

import cPickle as pickle

a1 = 'apple'
b1 = {1: 'one', 2: 'two', 3: 'three', 4:'four'}
c1 = ['fee', 'free', 'fum']
f1 = file('t.pk1', 'wb')

pickle.dump(a1, f1, True)
pickle.dump(b1, f1, True)
pickle.dump(c1, f1, True)

f1.close()

f2 = file('t.pk1', 'rb')

a2 = pickle.load(f2)
print a2

b2 = pickle.load(f2)
print b2

c2 = pickle.load(f2)
print c2

f2.close()

输出结果:
apple
{1: 'one', 2: 'two', 3: 'three', 4: 'four'}
['fee', 'free', 'fum']

在 Python 中,变量是对象的引用。同时,也可以用多个变量引用同一个对象。经证明,Python 在用经过 pickle 的对象维护这种行为方面丝毫没有困难
实例3:
#!/usr/bin/python

import cPickle as pickle

a = [1,2,3]
b = a

print a

print "*********"

a.append(4)
print a
print b

print "*********"

c = pickle.dumps((a, b))
d,f = pickle.loads(c)

print d
print f

输出结果:
[1, 2, 3]
*********
[1, 2, 3, 4]
[1, 2, 3, 4]
*********
[1, 2, 3, 4]
[1, 2, 3, 4]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值