为什么以二进制格式写入文件会导致不同大小的文件?

2024-04-25 17:09:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我用两种方式将下载的文件写入文件,一种是“w”,另一种是“wb”。你知道吗

from urllib.request import urlopen
url="http://quotes.money.163.com/service/lrb_000559.html"  
html=urlopen(url)
outfile=open("g:\\000559a.csv","w")
outfile.write(html.read().decode("gbk"))
outfile.close()
html=urlopen(url)
outfile=open("g:\\000559b.csv","wb")
outfile.write(html.read())
outfile.close()

为什么“wb”方式会产生不同大小的文件?请参阅附件。 更令人困惑的是,实际上g:\000559a.csv是6976字节,而不是控制台中的6575字节;g:\000559b.csv是6931字节,与控制台中的6931字节相同。 控制台中的输出与文件管理器中的输出不同。你知道吗

enter image description here


Tags: 文件csvfromurlcloseread字节html
2条回答

我一眼就看到您将内容解码为str类型,并且在该模式下的写入操作返回标准模式下的unicode字符数,而不是二进制模式下的总字节数。您可以通过以下方式验证已解码的str的长度:

>>> s = html.read().decode("gbk")
>>> len(s)
6575

它与所报告的字符数相匹配。你知道吗

在Windows下的默认(文本)模式中,从输出中去掉回车符\x0d。这在二进制模式下不会发生。你知道吗

相关问题 更多 >