2017-08-01 69 views
0

我向服务器发出POST请求以生成CSV文件,并且POST请求的响应是我要写入文件的CSV数据。Python请求 - 下载进度条

我永远不知道CSV文件的大小(它可以是10MB,100MB或1000MB),因此没有内容长度标题。

我写了一个函数,用于下载向服务器发出POST请求,生成CSV文件并将响应写入CSV文件。但是,我正在努力进步吧。

如何添加进度条?

r = requests.post(URL, data, stream=True) 
#Download progress here 
+0

看一看:进度条,而下载文件 - 过度HTTP与 - 请求(https://stackoverflow.com/questions/37573483/progress-bar- while-download-file-over-http-with-requests),或者:[python-progress-bar-and-downloads](https://stackoverflow.com/questions/15644964/python-progress-bar-and-downloads ) –

+0

我看过那些,但无法计算如何添加进度条在我的情况下,因为我的响应头将不会有内容长度头。 – user6037143

回答

0
def download_file(url, local_path="./"): 
    local_filename = url.split('/')[-1] 
    path = local_path + local_filename 

    r = requests.get(url, stream=True) 
    total_size = int(r.headers.get('content-length', 0)) 

    with open(local_filename, 'wb') as f: 
     for chunk in tqdm(r.iter_content(32*1024), total=total_size,unit='B', unit_scale=True): 
      if chunk: 
       f.write(chunk) 

    return path