如何用Python从JSON响应的URL中下载CSV文件?
解决方法
你当前的问题是:调用目标API后返回的是包含文件定位信息的JSON,而非直接的CSV内容,但你把JSON响应直接存成了CSV文件,所以得到的是JSON文本而非目标CSV。正确流程是先从JSON中提取文件标识,再用这个标识请求真实的CSV文件。
修正后的代码
import requests header = {'Authorization': 'bearer ' + my_token} # 第一步:请求获取文件标识的JSON响应 resp = requests.get(fileURL, headers=header) resp_json = resp.json() file_path = resp_json['files']['file'] target_file_name = resp_json['files']['fileName'] # 第二步:构建真实的CSV下载URL,拼接API基础地址与文件标识 csv_download_url = f"https://api-c33.nice-incontact.com/inContactAPI/services/V28.0/files/{file_path}" # 第三步:请求CSV内容并保存到本地 csv_resp = requests.get(csv_download_url, headers=header) with open(target_file_name, "wb") as f: f.write(csv_resp.content)
关键说明
- 原API返回的
files.file是定位真实CSV文件的路径片段,必须和API的基础地址拼接成完整下载URL,才能获取到CSV内容。 - 使用
with open语句处理文件,能自动完成资源释放,避免文件句柄泄漏。 - 直接使用返回的
fileName作为保存文件名,确保和目标文件的命名一致。
内容的提问来源于stack exchange,提问作者Rajat Solanki
相关产品推荐
相关产品推荐

