2017-01-22 7 views
0

Ich versuche, einen Curl-Befehl programmgesteuert auszuführen. Ich habe os importiert, aber ich kann nicht scheinen, effektive Ergebnisse mit dem folgenden Code zu erhalten. (Dummy Hackathon API Daten)Curl-Befehl über Python

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"') 

Aus irgendeinem seltsamen Grund, führt der obige Code nicht effektiv nur einen Systembefehl. 01

Antwort

1

Methode:

Sie können das subprocess Modul einen Shell-Befehl aus Python auszuführen.

Beispiel:

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

Wenn Sie Python-Version verwenden, können 3.5 (oder höher), können Sie den subprocess.run Befehl stattdessen verwenden.

VERFAHREN 02:

Verwenden requests, wenn Sie:
- Möchten Sie einen Pythonic Code für die POST-Anforderung schreiben. - Lieber sauberen und erweiterbaren Code!

>>> 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

Weder einer arbeitet ziemlich für mich. Müssen beide in Python 2 ausgeführt werden? Gibt es eine Möglichkeit, wie ich die json-Ausgabe betrachten kann – Nick

+0

@Nick Die Methoden funktionieren für beide großen Python-Versionen. –

+0

@Nick Für die zweite Methode, können Sie die Antwort als JSON erhalten, indem Sie 'response.json()' –