You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中执行CURL API命令?os.system调用curl报错如何解决

报错原因

你遇到的错误有两个可能的诱因:

  1. 代码本身存在语法错误:你写的os.system()参数缺少开头的单引号,传入的不是完整的字符串,语法本身就不合法。
  2. 你的运行环境中没有安装curl工具,或者curl没有加入系统环境变量PATH,操作系统无法找到curl命令的执行文件,Windows系统默认没有预装curl,容易出现这个问题。

方案1:修复os.system调用的实现

如果要继续使用os.system执行curl,先修正语法,正确包裹命令字符串:

import os
# 使用三重引号包裹命令,避免内部引号转义冲突
curl_cmd = '''curl -H "public-api-token: 2dd81854fca7bcbd657bd06a99a46l9s" -X PUT -d "dataMapsGoogle=google.com" https://api.googlemaps/v1/data/url'''
os.system(curl_cmd)

注意:该方案需要确保你的设备已安装curl,且curl路径已加入环境变量PATH。

更优的实现方案

强烈推荐放弃调用系统curl的方式,直接使用Python原生的HTTP请求库实现相同功能,或者使用subprocess模块替代os.system。

方案A:使用requests库实现(最推荐)

该方案完全不依赖系统curl,跨平台通用,可调试性和安全性都远高于调用命令行curl。

  1. 先安装依赖:
    pip install requests
  2. 对应实现代码:
import requests

# 对应curl的-H参数
headers = {
    "public-api-token": "2dd81854fca7bcbd657bd06a99a46l9s"
}
# 对应curl的-d参数
payload = {
    "dataMapsGoogle": "google.com"
}
api_url = "https://api.googlemaps/v1/data/url"

# 发送PUT请求,对应curl的-X PUT
response = requests.put(api_url, headers=headers, data=payload)

# 可直接获取响应状态、内容等信息,方便处理
print("响应状态码:", response.status_code)
print("响应内容:", response.text)

该方案的优势:

  • 无系统依赖,不会出现找不到curl的错误
  • 不需要处理命令行特殊字符转义,避免命令注入风险
  • 可直接结构化处理请求和响应,调试和二次开发成本低
  • 支持完善的异常捕获机制,可以精准处理网络错误、HTTP错误等场景

方案B:使用subprocess模块调用curl(如果必须用系统curl)

如果确实需要调用系统的curl工具,用subprocess替代os.system,可控性和安全性更高:

import subprocess

# 拆分命令为列表形式,自动处理转义
cmd_list = [
    "curl",
    "-H", "public-api-token: 2dd81854fca7bcbd657bd06a99a46l9s",
    "-X", "PUT",
    "-d", "dataMapsGoogle=google.com",
    "https://api.googlemaps/v1/data/url"
]

# 执行命令并捕获输出
run_result = subprocess.run(cmd_list, capture_output=True, text=True)
print("命令标准输出:", run_result.stdout)
print("命令错误输出:", run_result.stderr)
print("命令退出码:", run_result.returncode)

内容的提问来源于stack exchange,提问作者Komali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 08:12:02