2011-07-01 83 views
5

我已经写上蟒解析器来从互联网上下载图片:如何正确地通过python-urllib2通过HTTP下载文件?

import urllib2 

for i in xrange(1,10): 
    r = urllib2.urlopen('http://example.com/'+str(i)+'.gif')) 
    f = open('C:\\' + str(i) + '.gif', 'w+') 
    f.write(r.read()) 
    f.close() 

的图像无法打开。 Windows说'构建映像时出错'。但我发现接收文件的每一行比原始文件的这一行少一个字节,但两者看起来都很相似。如何下载正确的文件?

+3

在Windows上,你需要指定的WB',而不是 'W +' –

+0

它的工作原理。谢谢。 =) – shunter

回答

13

使用Windows时,您可能需要把 “二元” 标志b开放...

f = open(r'C:\\'+str(i)+'.gif','wb') 
+0

向下投票关心评论? –

5

在Windows上,你需要指定的WB',而不是 'W +'

5

你可以尝试urllib.urlretrieve - 它自己处理大部分细节。
所以,你的代码看起来就像这样:

for i in xrange(1,10): 
    urllib.urlretrieve('http://example.com/'+str(i)+'.gif'), 'C:\'+str(i)+'.gif','w+')