我使用下面的代码片段,在linux(debian)下从web下载了一个图像,没有问题。当我在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位的,同样的错误输出也会发生)。
我上传了乱码:

最佳答案

对于windows,您需要以二进制模式打开文件,因为windows区分二进制文件和文本文件。它可以在linux上正常工作,因为linux没有这样的区别。
换行

fh = open(fn, "w")


fh = open(fn, "wb")

您还可以考虑执行以下操作:
with open(fn, "wb") as fh:
    fh.write(contents)

因为它将为您处理在任何类型的异常情况下关闭文件。

关于python - urllib在Windows下产生乱码输出?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20293369/

10-12 22:45