小能豆

如何使用 Python 执行 cURL 命令?

javascript

我想在 Python 中执行 curl 命令。

通常,我只需要在终端中输入命令并按回车键即可。但是,我不知道它在 Python 中是如何工作的。

命令显示如下:

curl -d @request.json --header "Content-Type: application/json" https://www.googleapis.com/qpxExpress/v1/trips/search?key=mykeyhere

有一个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。如何正确地从服务器获取响应?


阅读 54

收藏
2024-09-25

共1个答案

小能豆

要在 Python 中执行curl命令,您可以使用requests库,它比 更用户友好且更易于使用pycurl。该requests库允许您以直接的方式发送 HTTP 请求和处理响应。

下面说明了如何curl使用该库将命令转换为 Python requests

安装请求库

如果你尚未requests安装该库,可以使用 pip 安装它:

pip install requests

Python 代码示例

现在,您可以编写 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

解释:

  1. 读取 JSON 文件:我们打开request.json并读取其内容。
  2. 设置 URL:URL 包含 API 密钥作为查询参数。
  3. 定义标题:我们设置Content-TypeAccept-Charset标题。
  4. 发送 POST 请求:使用requests.post(),我们将请求发送到服务器。
  5. 打印响应:我们打印 HTTP 状态代码和响应主体。

笔记:

  • 确保它request.json与您的 Python 脚本位于同一目录中或提供正确的路径。
  • 用您的实际 API 密钥替换mykeyhere
  • requests库自动处理错误和响应,使其比使用更容易pycurl

此代码应该可以在Parse Error您遇到任何问题的情况下工作,并为您提供来自服务器的正确响应。

2024-09-25