Python调用API上传XML文件后如何获取接口返回的更新后文件
你需要校验接口响应状态正常后,直接把requests返回的响应二进制内容写入本地文件即可,补充代码如下:
# 校验请求状态 if res.status_code == 200: # 可自定义保存的文件名,也可以从响应头提取接口返回的文件名 save_path = "updated_report.xml" # 二进制写入模式保存文件,不会出现编码乱码问题 with open(save_path, "wb") as f: f.write(res.content) print(f"文件已成功保存至 {save_path}") else: print(f"接口调用失败,状态码:{res.status_code},返回内容:{res.text}")
额外优化建议
- 原上传文件逻辑中的文件句柄没有主动关闭,建议改成
with上下文管理器的写法自动释放资源,优化后的上传代码如下:
with open('report.xml', 'rb') as f: req = {'file': f} res = requests.post(url, files=req, headers=headers)
- 如果接口会在响应头
Content-Disposition中指定返回文件的名称,可以通过以下方式提取文件名无需手动指定:
import re disposition = res.headers.get("Content-Disposition", "") file_name_match = re.findall(r'filename="?([^"]+)"?', disposition) if file_name_match: save_path = file_name_match[0]
- 如果需要先校验返回的XML内容合法性再保存,可以读取
res.text转为字符串后做格式校验,确认无误再写入也可。
内容的提问来源于stack exchange,提问作者Mr.B
相关产品推荐
相关产品推荐

