通过python进行curl命令

时间:2017-01-22 08:24:09

标签: python rest curl

我正在尝试以编程方式运行curl命令。我已导入os,但使用以下代码似乎无法获得有效结果。 (Dummy黑客马拉松API数据)

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 个答案:

答案 0 :(得分:1)

方法01:

您可以使用 subprocess 模块从Python执行shell命令。

示例:

>>> 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命令。

方法02:

如果您:使用 requests   - 想为POST请求编写Pythonic代码。   - 更喜欢干净且可扩展的代码!

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