【问题标题】:python convert request text to content from filepython将请求文本转换为文件中的内容
【发布时间】:2020-11-01 16:31:06
【问题描述】:

背景: 我在 python 2.7 中使用 request.get ,然后保存请求内容,无论是二进制还是文本。 改成python 3.7后,需要使用请求文本来保存文本。不幸的是,我也使用请求文本保存了二进制文件(jpg 文件)。

我研究过这个:stackoverflow中的“'content'和'text'有什么区别”。有没有办法让我将请求文本从文件转换为内容(或二进制 jpg 格式)?

只是读取文件并处理成二进制,失败了。

我的方法是:

  html = requests.get(url, headers={"User-Agent":self.user_agents[agent]})
  html.encoding = html.apparent_encoding
  with open(fname, "w") as fh:
    fh.write(html.text)
    fh.close()

非常感谢

补充:html.text 已经保存到文件中。问题是如何将文件(不是request.get)转换或解码回二进制文件。

【问题讨论】:

  • 你需要做例如jpg_bytes = requests.get('http://example.com/image.jpg').content 适用于任何二进制数据 - .text 仅适用于人类可读的文本。
  • 您使用的是with,因此无需在文件句柄上调用close。
  • @metatoaster,对不起我不清楚的问题。我现在可以保存二进制内容,但之前的文件使用的是 .text 人类可读的文本。如何将文本格式转换(解码)为二进制?
  • 只需打开您使用二进制模式保存的原始文件,如答案所示,将返回bytes。否则在不使用二进制模式的情况下打开它,read 方法会尝试将默认编解码器转换为str,如果读取的内容被正确解码,则该方法将成功。
  • @andrea-blengino,感谢您格式化代码

标签: python html request


【解决方案1】:

如果你想写二进制文件的内容,我建议:

最后,这应该可行:

wtih open(fname, "wb") as fh:
    fh.write(html.content)

【讨论】:

  • 非常感谢。我现在使用 wb 和 html.content 保存。但前一个是 html.text。我在将文件转换(解码回)为二进制文件时遇到问题。你对此有什么想法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-19
  • 1970-01-01
相关资源
最近更新 更多