我使用下面的代码片段在linux(debian)下从网上下载图像没有问题。当我在Windows中运行完全相同的代码时,生成的图像会出现乱码。有什么问题?
import urllib, os
url = "http://www.crummy.com/software/BeautifulSoup/10.1.jpg"
contents = urllib.urlopen (url).read()
fn = os.path.join(os.path.expanduser("~"), "winimagetest")
fh = open(fn, "w");fh.write(contents);fh.close()
目标系统是Windows 7,64位,python安装是32位。 (这没关系,如果python是64位,就会出现相同的乱码输出。)
我上传了乱码image:
答案 0 :(得分:2)
对于Windows,您需要以二进制模式打开文件,因为Windows区分二进制文件和文本文件。它可以在Linux上运行,因为Linux没有这样的区别。
更改行
fh = open(fn, "w")
到
fh = open(fn, "wb")
您可能还需要考虑执行以下操作:
with open(fn, "wb") as fh:
fh.write(contents)
因为它会在遇到任何类型的异常时处理你的文件。