您的位置:首页 > 编程语言 > Python开发

python学习——pickle模块详解

2017-08-24 20:37 537 查看
python中的pickle模块是用来程序中运行的文档信息以二进制的形式保存在本地,并可以读取出来。

其基本方法有两个:

pickle.dump(obj,file)    #写入
pickle.load(file)        #读取


具体用法如下:

1、pickle.dump(obj,file)

将一档字符串以二进制的形式写入到文件中。

关键:在open函数的时候,一定是write形式的,且为二进制,即‘wb’

举例说明:

import pickle       #使用该模块前需导入

f = open('test.txt','wb')
inlet = '''这只是一个小小的实例
请一定要在电脑上自己敲出来
只有这样
你才能学好编程
'''
pickle.dump(inlet,f)     #将字符串以二进制的形式写入到'test.txt'中
f.close()


我们在本地电脑打开该文件,可以看下:

€Xj   杩欏彧鏄竴涓皬灏忕殑瀹炰緥
璇蜂竴瀹氳鍦ㄧ數鑴戜笂鑷繁鏁插嚭鏉?鍙湁杩欐牱
浣犳墠鑳藉濂界紪绋?q .


二进制乱码格式。

如果在Python中打开呢?

f = open('test.txt')
for i in f:
print(i)
f.close()


得到;

Traceback (most recent call last):
File "C:/Users/Administrator/Desktop/111.py", line 4, in <module>
for i in f:
UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 0: illegal multibyte sequence


出现编码错误。

有人可能会说,你用二进制写入的,自然要用二进制打开,没错。我们来试试。

f = open('test.txt','rb')
for i in f:
print(i)
f.close()


得到结果:

b'\x80\x03Xj\x00\x00\x00<
4000
span class="hljs-command">\xe8\xbf\x99\xe5\x8f\xaa\xe6\x98\xaf\xe4\xb8\x80\xe4\xb8\xaa\xe5\xb0\x8f\xe5\xb0\x8f\xe7\x9a\x84\xe5\xae\x9e\xe4\xbe\x8b\n'
b'\xe8\xaf\xb7\xe4\xb8\x80\xe5\xae\x9a\xe8\xa6\x81\xe5\x9c\xa8\xe7\x94\xb5\xe8\x84\x91\xe4\xb8\x8a\xe8\x87\xaa\xe5\xb7\xb1\xe6\x95\xb2\xe5\x87\xba\xe6\x9d\xa5\n'
b'\xe5\x8f\xaa\xe6\x9c\x89\xe8\xbf\x99\xe6\xa0\xb7\n'
b'\xe4\xbd\xa0\xe6\x89\x8d\xe8\x83\xbd\xe5\xad\xa6\xe5\xa5\xbd\xe7\xbc\x96\xe7\xa8\x8b\n'
b'q\x00.'


可以看出,确实没出现错误,但是这种二进制的语言也只有机器能读懂吧,我们想要的是之前写入的汉语。

所以,用pickle.dump写入的文件,自然还需要用pickle.load读出。

2、pickle.load(file)

关键依然是,打开文件的时候需要以二进制的形式打开:‘rb’

还是以刚才建立的’test.txt’文件为例:

import pickle

f = open('test.txt','rb')
result = pickle.load(f)
print(result)
f.close()


得到结果:

这只是一个小小的实例
请一定要在电脑上自己敲出来
只有这样
你才能学好编程
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: