代码:
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/