我想在 Python 中执行 curl 命令。
通常,我只需要在终端中输入命令并按回车键即可。但是,我不知道它在 Python 中是如何工作的。
命令显示如下:
curl -d @request.json --header "Content-Type: application/json" https://www.googleapis.com/qpxExpress/v1/trips/search?key=mykeyhere
有一个request.json文件需要发送以获得响应。
request.json
我搜索了很多,但还是很困惑。我尝试写一段代码,虽然我不能完全理解它,但它不起作用。
import pycurl import StringIO response = StringIO.StringIO() c = pycurl.Curl() c.setopt(c.URL, 'https://www.googleapis.com/qpxExpress/v1/trips/search?key=mykeyhere') c.setopt(c.WRITEFUNCTION, response.write) c.setopt(c.HTTPHEADER, ['Content-Type: application/json','Accept-Charset: UTF-8']) c.setopt(c.POSTFIELDS, '@request.json') c.perform() c.close() print response.getvalue() response.close()
错误信息是Parse Error。如何正确地从服务器获取响应?
Parse Error
要在 Python 中执行curl命令,您可以使用requests库,它比 更用户友好且更易于使用pycurl。该requests库允许您以直接的方式发送 HTTP 请求和处理响应。
curl
requests
pycurl
下面说明了如何curl使用该库将命令转换为 Python requests:
如果你尚未requests安装该库,可以使用 pip 安装它:
pip install requests
现在,您可以编写 Python 代码来发送 JSON 数据,request.json如下所示:
import requests # Load the JSON data from the request.json file with open('request.json', 'r') as json_file: json_data = json_file.read() # Set the URL and API key url = 'https://www.googleapis.com/qpxExpress/v1/trips/search?key=mykeyhere' # Set the headers headers = { 'Content-Type': 'application/json', 'Accept-Charset': 'UTF-8' } # Send the POST request response = requests.post(url, headers=headers, data=json_data) # Print the response from the server print(response.status_code) # HTTP status code print(response.text) # Response body
Content-Type
Accept-Charset
requests.post()
mykeyhere
此代码应该可以在Parse Error您遇到任何问题的情况下工作,并为您提供来自服务器的正确响应。