鱼C论坛

 找回密码
 立即注册
查看: 561|回复: 3

[已解决]大神们求帮助!调用pickle模块后以二进制存放了几行字,怎么一次性调出来啊

[复制链接]
发表于 2019-7-27 23:38:10 | 显示全部楼层 |阅读模式

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

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

x
  1. f = open('boy_.txt','rb')
  2. >>> a = pickle.load(f)
  3. >>> a
  4. '嘿嘿黑\n'
  5. >>> a = pickle.load(f)
  6. >>> a
  7. '11111\n'
  8. >>> a = pickle.load(f)
  9. >>> a
  10. '33333\n'
复制代码
最佳答案
2019-7-28 09:33:27
本帖最后由 怀心抱素 于 2019-7-28 09:41 编辑

你用dump放进去,只能用load一个一个的取,想要一次放多个可以用dumps和loads
  1. import pickle
  2. a = [1, 2, 3]
  3. b = 'hahah'
  4. c = {1: 'a', 2: 'b'}
  5. d = [a, b, c]
  6. with open('a.txt', mode='wb') as f:
  7.     data = pickle.dumps(d)
  8.     f.write(data)

  9. with open('a.txt', mode='rb') as f:
  10.     data = f.readline()
  11.     a, b, c = pickle.loads(data)
  12.     print(a, type(a))
  13.     print(b, type(b))
  14.     print(c, type(c))
复制代码


结果是
  1. [1, 2, 3] <class 'list'>
  2. hahah <class 'str'>
  3. {1: 'a', 2: 'b'} <class 'dict'>
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-7-28 07:49:30 | 显示全部楼层
你可以尝试这样:

  1. value = []
  2. f = open('boy_.txt','rb')
  3. while True:
  4.     try:
  5.         value.append(pickle.load(f))
  6.     except:
  7.         break
复制代码


value 是一个列表,它包含你文件里的所有内容
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-28 09:33:27 | 显示全部楼层    本楼为最佳答案   
本帖最后由 怀心抱素 于 2019-7-28 09:41 编辑

你用dump放进去,只能用load一个一个的取,想要一次放多个可以用dumps和loads
  1. import pickle
  2. a = [1, 2, 3]
  3. b = 'hahah'
  4. c = {1: 'a', 2: 'b'}
  5. d = [a, b, c]
  6. with open('a.txt', mode='wb') as f:
  7.     data = pickle.dumps(d)
  8.     f.write(data)

  9. with open('a.txt', mode='rb') as f:
  10.     data = f.readline()
  11.     a, b, c = pickle.loads(data)
  12.     print(a, type(a))
  13.     print(b, type(b))
  14.     print(c, type(c))
复制代码


结果是
  1. [1, 2, 3] <class 'list'>
  2. hahah <class 'str'>
  3. {1: 'a', 2: 'b'} <class 'dict'>
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-28 15:44:17 | 显示全部楼层
你这是一个泡菜坛子里还分层!!一直load,一直load,我就load一次。
我还是喜欢一个坛子就放一个东西,我哪怕超大文件我也分成好几个pkl文件放。
  1. import pickle
  2. f = open("./s.txt")
  3. g = open("./s.pkl", "wb")
  4. pickle.dump(f.read(), g)
  5. f.close()
  6. g.close()
  7. f = open("./s.pkl", "rb")
  8. g = pickle.load(f)
  9. print(g)
  10. f.close()
  11. g.close()
复制代码

s.txt就是文本文件,编码是UTF-8
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 02:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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