写出字节大小和实际大小是不同的使用python的file.write()

时间:2017-11-29 02:24:42

标签: python python-requests

这是我的代码,它非常简单,我下载一个文件(带有lib请求)并将其保存到磁盘,但我得到的大小与实际大小写入磁盘不同

mus_resp =r.get("http://audio.xmcdn.com/group7/M07/21/73/wKgDWlbmOa3TD0D_AArDQp_Mj5Y641.m4a",headers=headers, stream=True)

#print len(mus_resp.content) here is 705346 bytes
fd = open( "file", 'w') 
fd.write(mus_resp.content)
fd.flush()
fd.close()
exit()
print os.path.getsize('file')  here is 708677 bytes

1 个答案:

答案 0 :(得分:1)

您的数据是二进制数据,而不是文本,并且它可能包含半随机的\n个字符(它们不代表换行符,它只是与ASCII换行符相同的字节)。当您将它们写入Windows上的文本模式文件时,它将无缝转换为\r\n(Windows标准行结尾),使最终文件膨胀。以二进制模式打开文件,您将禁用行结束转换:

fd = open("file", 'wb')  # 'wb' means write binary mode