2017-11-20 15 views
1

いくつかのパスデータに基づいてイメージを動的に生成するAPIエンドポイントがあります。私はAPIを呼び出し、その応答をファイルにダウンロードしたいと思います。これをPythonで達成する最良の方法は何ですか?POSTリクエストを介してファイルをダウンロード

リクエストはcURLの中で次のようになります。

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

答えて

3

あなたはcurlまたは他のプロセスを実行する代わりにrequestsパッケージを使用する必要があります。

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) 
+0

を申し訳ありませんが、私はここのPythonの初心者です。 'data'にはファイルのバイナリの内容が含まれていますか、Pythonはデフォルトのエンコーディングを想定していますか?また、どのように応答コンテンツをファイルに書き込むのですか? – LandonSchropp

+0

@LandonSchroppあなたのオリジナルを含むこれらの質問のほとんどは、少しGoogleの検索で答えられたかもしれません...だから私はそれを得ることをお勧めします... –

+0

はい、それはバイト配列になります。ディスクに保存する方法の例を追加しました。 – clemens

-2

私はここで同等だ、subprocessos.system以上の任意の日を好むだろう:

import subprocess 

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

subprocess.call(_CURL_POST) 
+1

PythonにはURLリクエストを行うためのlibsがあります。サブプロセスの実行は非常に悪い解決策です。 – clemens

+1

'あなたの提案を新しい回答として追加してください:)'これは悪いアドバイスでした。サブプロセスコールを作成するのではなく、タスク用の標準ライブラリを使用するよりも、これを行うより良い方法はありません。 –

関連する問題