我正在尝试以编程方式运行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"')
由于某些奇怪的原因,上面的代码并不能有效地运行系统命令。
答案 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)