使用dump与load函数
foo
=
'
foo.txt
'
mydict
=
{
'
user
'
:
'
xmli
'
,
'
pass
'
:
'
password
'
}
mylist
=
[
'
hello world
'
,
526
]
from
cPickle
import
dump,load
f
=
file(foo,
'
wb
'
)
dump(mydict,f,
2
)
dump(mylist,f,
2
)
f.close()
f
=
file(foo,
'
rb
'
)
mydict2
=
load(f)
mylist2
=
load(f)
f.close()
使用Pickler与Unpickler类
foo
=
'
foo.txt
'
mydict
=
{
'
user
'
:
'
xmli
'
,
'
pass
'
:
'
password
'
}
mylist
=
[
'
hello world
'
,
526
]
from
cPickle
import
Pickler,Unpickler
f
=
file(foo,
'
wb
'
)
pickler
=
Pickler(f,
2
)
pickler.dump(mydict)
pickler.dump(mylist)
f.close()
f
=
file(foo,
'
rb
'
)
unpickler
=
Unpickler(f)
mydict2
=
unpickler.load()
注意事项:
Ø
使用cPickle模块而不是pickle模块,是因为cPickle要比pickle模块速度快近1000倍,并且它们的函数基本上是一样的。cPickle的缺点是不支持class的序列化。
Ø
Pickler构造函数的第二个参数是它使用的protocol,可取值0、1、2。默认值是0,以明文本方式记录;速度最快的是2 。当取值不为0时请注意使用binary方式来打开文件(Pickler与Unpickler)。
Ø
cPickle模块直接提供了dump与load函数,可以方便的直接使用。优点是简单,缺点是不能很好的记录变量之间的关系。
Ø
注意最后不要忘了关闭文件对象。