2017-01-22 10 views
0

プログラムでcurlコマンドを実行しようとしています。私はosをインポートしましたが、私は次のコードで効果的な結果を得ることができません。 (ダミーhackathon APIデータ)PythonによるCurlコマンド

os.system('curl -X POST --header "Content-Type: application/json" --header "Accept: application/json" -d "{\"merchant_id\": \"57cf75cea73e494d8675ec49\",\"medium\": \"balance\",\"purchase_date\": \"2017-01-22\",\"amount\": 1,\"description\": \"string\"}" "http://api.reimaginebanking.com/accounts/5883e3351756fc834d8ebe89/purchases?key=b84d3a153e2842b8465bcc4fde3d1839"') 

何らかの理由で、上記のコードは効果的にシステムコマンドを実行しません。

答えて

1

方法01:

あなたは、Pythonからシェルコマンドを実行するためにsubprocessモジュールを使用することができます。

例:

>>> import subprocess 
>>> cmd = '''curl -X POST --header "Content-Type: application/json" --header "Accept: application/json" -d "{\"merchant_id\": \"57cf75cea73e494d8675ec49\",\"medium\": \"balance\",\"purchase_date\": \"2017-01-22\",\"amount\": 1,\"description\": \"string\"}" "http://api.reimaginebanking.com/accounts/5883e3351756fc834d8ebe89/purchases?key=b84d3a153e2842b8465bcc4fde3d1839"''' 
>>> args = cmd.split() 
>>> subprocess.call(args) 

あなたはPythonのバージョン3.5(またはそれ以降)を使用してできる場合は、代わりにsubprocess.runコマンドを使用することができます。

METHOD 02:

使用requestsあなた場合:
は - POSTリクエストのためのPython的コードを書きたいです。 - きれいで拡張可能なコードが望ましい!

>>> import requests 
>>> headers = {"Content-Type": "application/json", "Accept": "application/json"} 
>>> data = {"merchant_id\": "57cf75cea73e494d8675ec49\","medium\": "balance\", "purchase_date\": "2017-01-22\","amount\": 1, "description\": "string\"} 
>>> url = "http://api.reimaginebanking.com/accounts/5883e3351756fc834d8ebe89/purchases?key=b84d3a153e2842b8465bcc4fde3d1839" 
>>> response = requests.post(url, data=data, headers=headers) 
+0

どちらも私にとってはうってつけです。彼らは両方ともPython 2で動かす必要がありますか? jsonの出力を見る方法はありますか? – Nick

+0

@Nickこのメソッドは、両方の主要なPythonバージョンで動作します。 –

+0

@Nick 2番目のメソッドでは、 'response.json()'を呼び出すことでJSONとしてレスポンスを得ることができます。 –