所以我试着写一个脚本,用python下载一个图片文件,我用google找到了这个def,但是我下载的每张图片都“损坏”了。任何想法..。
def download(url):
"""Copy the contents of a file from a given URL
to a local file.
"""
import urllib
webFile = urllib.urlopen(url)
localFile = open(url.split('/')[-1], 'w')
localFile.write(webFile.read())
webFile.close()
localFile.close()编辑:代码标签没有很好地保留缩进,但我可以向你保证它们就在那里,这不是我的问题。
发布于 2010-11-04 08:51:51
您需要以二进制模式打开本地文件:
localFile = open(url.split('/')[-1], 'wb')否则二进制流中的CR/LF字符将被损坏,从而损坏文件。
发布于 2010-11-04 08:57:17
你可以使用simply do
urllib.urlretrieve(url, filename)省去你自己的麻烦。
发布于 2010-11-04 08:56:52
如果您打算写入二进制文件,则必须包含'b‘标志。第7行变成:
localFile = open(url.split('/')[-1], 'wb')代码不需要工作,但在将来您可能会考虑:
在functions.
我会将你的代码重写为:
import urllib
import os.path
def download(url):
"""Copy the contents of a file from a given URL
to a local file in the current directory.
"""
with urllib.urlopen(url) as webFile:
with open(os.path.basename(url), 'wb') as localFile:
localFile.write(webFile.read())https://stackoverflow.com/questions/4093007
复制相似问题