python - 将 html 解码字符串写入文件和将 html 二进制数据直接写入文件之间有什么区别?

标签 python http binary

代码:

from urllib import request
response = request.urlopen('http://www.amazon.com/')
body = response.read()
with open('test.html', 'wb') as f:
   f.write(body)
with open('test2.html', 'w') as f:
  f.write(body.decode('utf-8'))

有什么不同或者需要注意什么吗?

最佳答案

第一种方式

with open('test.html', 'wb') as f:
   f.write(body)

只是保存你下载的二进制数据。

第二种方式

with open('test2.html', 'w') as f:
  f.write(body.decode('utf-8'))

假设数据是 UTF-8,尝试将这些 UTF-8 字节解码为 Unicode 文本,然后将其重新编码为您的默认文件编码,如 locale.getpreferredencoding(False) 所指定>。因此,如果数据已经是 UTF-8,它会浪费时间对其进行解码和重新编码。如果它不是 UTF-8,那么它指定了错误的编码来对其进行解码。如果文件只包含普通的 7 位 ASCII 数据,那将工作正常,但否则它会给出错误的结果,或引发 UnicodeDecodeError

关于python - 将 html 解码字符串写入文件和将 html 二进制数据直接写入文件之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45451746/

相关文章:

java - Spring Boot 返回 'HTTP/1.1 200' 而不是 'HTTP/1.1 200 OK'

python - 读取二进制数据并将数据分布在网格文件Python中

list - 当不需要保留顺序时,可以编码为更少的位吗?

Python 找不到 Blender 模块

python - 如何将 PySpark RDD 转换为具有未知列的 Dataframe?

python 请求 : post and big content

python - Matplotlib 用线条和图形注释条形图的方法

用于离线 HTTP POST 请求的 iOS 存储转发框架

ruby - 来自家庭 ISP 的 Google Analytics Garb 请求失败,但在其他地方有效

java - 数据输入/输出流和缓冲输入/输出流有什么区别?