2017-05-11 122 views
0

我试图从xkcd.com下载所有的漫画(PNG),这里是我的代码做下载作业:下载文件小于它的真实大小

imageFile=open(os.path.join('XKCD',os.path.basename(comicLink)),'wb') 
     for chunk in res.iter_content(100000): 
      imageFile.write(chunk) 
     imageFile.close() 

而且downloadeded文件是6388Bytes和无法打开而链接的实际文件是27.6Kb。

我已经在shell中逐行测试了我的代码,所以我非常肯定我得到了正确的链接和正确的文件。 我只是不明白为什么我的代码下载的png更小。 此外,我试图搜索为什么发生这种情况,但没有有用的信息。 谢谢。

+0

RES如何初始化?它来自http请求的结果吗? – Colwin

+0

@Colwin会是吗?我用raise_for_status()检查了它,它工作 – NaomiW

+0

你使用urllib或请求实际连接到服务器并下载图像? – Colwin

回答

0

好了,因为你在这里使用的要求是功能,可以让你获得一个网址

def download_file(url): 
    local_filename = url.split('/')[-1] 
    # NOTE the stream=True parameter 
    r = requests.get(url, stream=True) 
    with open(local_filename, 'wb') as f: 
     for chunk in r.iter_content(chunk_size=1024): 
      if chunk: # filter out keep-alive new chunks 
       f.write(chunk) 

    return local_filename 

链接下载文件到文件 - >http://docs.python-requests.org/en/latest/user/advanced/#body-content-workflow

+0

我试图添加流=真,仍然没有好... – NaomiW