urllib在windows下产生乱码输出?

时间:2013-11-29 21:07:00

标签: python windows urllib

我使用下面的代码片段在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

1 个答案:

答案 0 :(得分:2)

对于Windows,您需要以二进制模式打开文件,因为Windows区分二进制文件和文本文件。它可以在Linux上运行,因为Linux没有这样的区别。

更改行

fh = open(fn, "w")

fh = open(fn, "wb")

您可能还需要考虑执行以下操作:

with open(fn, "wb") as fh:
    fh.write(contents)

因为它会在遇到任何类型的异常时处理你的文件。