A-15-Pickle模块练习
#coding: UTF-8#知识点复习
"""
(1)pickle模块利用pickle算法,将python里的数据以二进制的形式,永久存储在磁盘的文件里,
(2)使用时:import pickle
(3)文件对象的后缀名最好为'.pkl', 当为'.txt'时, 里面的内容将显示为乱码(编码不同)
(4)当数据量很大时,采用pickle模块效果尤为显著,可以大大较小py文件
"""
#练习部分
#1.存储数据 pickle.dump(data, file):data→file data为要储存的数据对象,file为数据存储的文件对象
import pickle
file = open('D:\\python\\pickle_file\\file.pkl', 'wb') #打开方式wb !!
data = [ 1, 4, ]
pickle.dump(data, file)
file.close()
#2.读取数据 pickle.load(file): file为数据存储的文件对象, 返回读取的数据, 例如:
file = open('D:\\python\\pickle_file\\file.pkl', 'rb')#打开方式rb !!
a = pickle.load(file)
print(a)
file.close()
#3.分离对话并存储(与A-13相同)
#思路-每段对话以====等为标志隔开,通过if语句监测即可
#在第n段对话中,通过split以冒号为分界线将说话人名称和说话内容分开,并通过append将说话内容添加到之前创建好的列表中
#当if监测到======时,说明该段对话已分离结束,通过pickle.dump(data,file)将对话内容以二进制形式存储到file中
#打开文件后,完成相应操作后,必须及时关闭文件!!!
import pickle
def split_file(path):
f = open(path)
boy = [] #设置中间缓冲 空列表
girl = []
count = 1
for each_line in f:
if each_line[:6] != '======': #每段对话以====隔开
(role, line_spoken) = each_line.split(':', 1) #以冒号为界限分割1条符串,详见
if role == '小甲鱼': #如果冒号前面的内容为“小甲鱼”,则把后面的内容添加到boy列表
boy.append(line_spoken)
if role == '小客服':
girl.append(line_spoken)
else:
make_pickle(boy,girl,count)
count += 1
boy = []
girl = []
make_pickle(boy,girl,count)
f.close()
def make_pickle(boy,girl,count):
boy_file = open('D:\\H-编程学习\\H-01-Python\\boy_%d.pkl' % count,'wb')
girl_file = open('D:\\H-编程学习\\H-01-Python\\girl_%s.pkl' % str(count),'wb')
pickle.dump(boy,boy_file)
pickle.dump(girl,girl_file)
girl_file.close()
boy_file.close()
path ="D:\\H-编程学习\\H-01-Python\\CODE\\record.txt" #input('请输入路径:')
split_file(path)
#D:\H-编程学习\H-01-Python\CODE\record.txt'
import pickle
file = open('D:\\H-编程学习\\H-01-Python\\boy_1.pkl', 'rb')#打开方式为rb !!
a = pickle.load(file)
print(a)
file.close()
页:
[1]