|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #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, [3, 7] ]
- 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()
复制代码 |
|