通过POST请求下载文件

时间:2017-11-20 07:15:16

标签: python python-3.x

我有一个API端点,可根据某些传递数据动态生成图像。我想调用API并将响应下载到文件中。在Python中实现这一目标的最佳方法是什么?

请求在cURL中显示如下:

curl https://localhost:4000/bananas/12345.png \
  -O \
  -X POST \
  -d '[ 1, 2, 3, 4 ]'

2 个答案:

答案 0 :(得分:4)

您应该使用requests包而不是执行curl或其他进程:

import requests

response = requests.post('https://localhost:4000/bananas/12345.png', data = '[ 1, 2, 3, 4 ]')
data = response.content

data包含之后下载的内容,您可以将其存储到磁盘中,例如:

with open(path, 'wb') as s:
    s.write(data)

答案 1 :(得分:-2)

我希望任何一天subprocess优先于os.system,所以这里等同于:

import subprocess

_CURL_POST = "curl https://localhost:4000/bananas\
/12345.png \
-O \
-X POST \
-d '[ 1, 2, 3, 4 ]'
"

subprocess.call(_CURL_POST)