鱼C论坛

 找回密码
 立即注册
查看: 3101|回复: 0

[学习笔记] A-15-Pickle模块练习

[复制链接]
发表于 2018-7-16 15:16:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. #coding: UTF-8

  2. #知识点复习
  3. """
  4. (1)pickle模块利用pickle算法,将python里的数据以二进制的形式,永久存储在磁盘的文件里,
  5. (2)使用时:import pickle
  6. (3)文件对象的后缀名最好为'.pkl', 当为'.txt'时, 里面的内容将显示为乱码(编码不同)
  7. (4)当数据量很大时,采用pickle模块效果尤为显著,可以大大较小py文件
  8. """

  9. #练习部分

  10. #1.存储数据 pickle.dump(data, file):data→file data为要储存的数据对象,file为数据存储的文件对象

  11. import pickle
  12. file = open('D:\\python\\pickle_file\\file.pkl', 'wb')   #打开方式wb !!
  13. data = [ 1, 4, [3, 7] ]
  14. pickle.dump(data, file)
  15. file.close()


  16. #2.读取数据 pickle.load(file): file为数据存储的文件对象, 返回读取的数据, 例如:

  17. file = open('D:\\python\\pickle_file\\file.pkl', 'rb')  #打开方式rb !!
  18. a = pickle.load(file)
  19. print(a)
  20. file.close()


  21. #3.分离对话并存储(与A-13相同)
  22. #思路-每段对话以====等为标志隔开,通过if语句监测即可
  23. #在第n段对话中,通过split以冒号为分界线将说话人名称和说话内容分开,并通过append将说话内容添加到之前创建好的列表中
  24. #当if监测到======时,说明该段对话已分离结束,通过pickle.dump(data,file)将对话内容以二进制形式存储到file中
  25. #打开文件后,完成相应操作后,必须及时关闭文件!!!

  26. import pickle

  27. def split_file(path):
  28.     f = open(path)
  29.     boy = []        #设置中间缓冲 空列表
  30.     girl = []
  31.     count = 1

  32.     for each_line in f:
  33.         if each_line[:6] != '======':         #每段对话以====隔开
  34.             (role, line_spoken) = each_line.split(':', 1)   #以冒号为界限分割1条符串,详见
  35.             if role == '小甲鱼':           #如果冒号前面的内容为“小甲鱼”,则把后面的内容添加到boy列表
  36.                 boy.append(line_spoken)
  37.             if role == '小客服':
  38.                 girl.append(line_spoken)
  39.         else:
  40.             make_pickle(boy,girl,count)

  41.             count += 1
  42.             boy = []
  43.             girl = []

  44.     make_pickle(boy,girl,count)

  45.     f.close()


  46. def make_pickle(boy,girl,count):
  47.     boy_file = open('D:\\H-编程学习\\H-01-Python\\boy_%d.pkl' % count,'wb')
  48.     girl_file = open('D:\\H-编程学习\\H-01-Python\\girl_%s.pkl' % str(count),'wb')

  49.     pickle.dump(boy,boy_file)
  50.     pickle.dump(girl,girl_file)

  51.     girl_file.close()
  52.     boy_file.close()


  53. path ="D:\\H-编程学习\\H-01-Python\\CODE\\record.txt" #input('请输入路径:')
  54. split_file(path)

  55. #D:\H-编程学习\H-01-Python\CODE\record.txt'


  56. import pickle
  57. file = open('D:\\H-编程学习\\H-01-Python\\boy_1.pkl', 'rb')  #打开方式为rb !!
  58. a = pickle.load(file)
  59. print(a)
  60. file.close()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-21 17:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表