python学习——pickle模块详解

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\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()

得到结果:

这只是一个小小的实例
请一定要在电脑上自己敲出来
只有这样
你才能学好编程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值