Crossin的编程教室

标题: 请问如何将requests返回的Response object存储在本地, 供之后取用? [打印本页]

作者: anyone    时间: 2020-10-21 23:19
标题: 请问如何将requests返回的Response object存储在本地, 供之后取用?
通常我使用r=requests.get()后
都会将返回的r.text存储在本地, 供之后解析需要.
其实就是简单的文本存储.

但我好奇的是,
可否直接将r(也就是requests.get返回的response object)直接存在本地?
我尝试使用with open(file, 'wb') as f 这种方式,
但是读取的时候, 使用with open(file, 'rb") as f 却将读取的内容变成了byte, 就不是response obj了.

不知道python是不是能直接存储对象为本地文件, 之后读取后仍然是对象?

感谢.

作者: crossin先生    时间: 2020-10-22 12:35
看下 pickle 库
作者: anyone    时间: 2020-10-22 13:40
感谢crossin, 我其实尝试过pickle, 如果不涉及到with open的磁盘读写, pickle似乎没有问题.

但是如果遇到磁盘读写, 并用到了'rb'这样的方式, 被读取的数据就变成了byte, 之后再用pickle处理也无法还原出object了, 而是byte了.

所以我想问题也许出现在with open的语句中?
作者: crossin先生    时间: 2020-10-23 12:45
rb 没问题,pickle本就是处理成二进制流,读出来的bytes你要在通过pickle还原的。再看看网上例子是怎么写的
  1. import pickle
  2. import requests

  3. r = requests.get('https://www.baidu.com')
  4. print(r.text[:100])
  5. path = 'test-pickle.dat'

  6. f = open(path, 'wb')
  7. pickle.dump(r, f)
  8. f.close()

  9. print('============')

  10. f1 = open(path, 'rb')
  11. r1 = pickle.load(f1)
  12. print(r1.text[:100])
复制代码





欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/) Powered by Discuz! X2.5