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

如何在Python中运行指定curl命令(BASH可正常执行,需按回车退出)

如何用Python实现指定的JIRA搜索curl命令并按回车退出?

我需要在Python中运行一条特定的curl命令,这条命令在BASH环境里可以正常执行,作用是搜索JIRA的任务并将结果导出为JSON文件,执行完成后需要按回车键退出。原BASH命令如下:

curl -XN -u user:Pass -X GET -H "Content-Type: application/json" https://jira.company.com/rest/api/2/search?jql=project='"Technology"+AND+summary~"Remove%20User*"+AND+issuetype="Task"+AND+status!="DONE"' | python -m json.tool > /var/lib/rundeck/1.json

我已经尝试了一些Python代码片段(比如引入了subprocess、requests等库),但还没找到正确的实现方式,希望能得到可行的解决方案。


方案一:用subprocess直接调用curl命令

这种方式最贴近你原本的BASH命令逻辑,直接在Python里调用系统的curl命令,执行完后等待用户按回车退出:

#!/usr/bin/python
import subprocess

def main():
    # 定义curl命令,用三重引号包裹避免引号转义的麻烦
    curl_cmd = '''curl -XN -u user:Pass -X GET -H "Content-Type: application/json" "https://jira.company.com/rest/api/2/search?jql=project='Technology'+AND+summary~'Remove%20User*'+AND+issuetype='Task'+AND+status!='DONE'" | python -m json.tool > /var/lib/rundeck/1.json'''
    
    # 执行命令,shell=True支持管道和重定向语法
    subprocess.run(curl_cmd, shell=True)
    
    # 等待用户按回车后退出程序
    input("执行完成,按回车键退出...")

if __name__ == "__main__":
    main()

注意:shell=True虽然方便,但如果命令包含用户输入的动态内容,要警惕注入风险,这里你的命令是固定的,所以可以安全使用。另外要确保系统环境中已经安装curl,且Python路径配置正常。

方案二:用requests库直接请求(更Pythonic的方式)

比起调用外部curl命令,直接用Python的requests库发送HTTP请求会更灵活,不需要依赖系统工具,代码也更易维护和扩展:

#!/usr/bin/python
import requests
import json

def main():
    # JIRA API地址和搜索条件
    api_url = "https://jira.company.com/rest/api/2/search"
    jql_query = 'project="Technology" AND summary~"Remove User*" AND issuetype="Task" AND status!="DONE"'
    
    # 请求头和身份认证信息
    request_headers = {"Content-Type": "application/json"}
    auth_info = ("user", "Pass")
    
    # 发送GET请求,自动处理参数编码
    response = requests.get(api_url, headers=request_headers, auth=auth_info, params={"jql": jql_query})
    
    # 处理请求结果
    if response.status_code == 200:
        # 格式化JSON内容并写入文件
        formatted_json = json.dumps(response.json(), indent=4)
        with open("/var/lib/rundeck/1.json", "w") as output_file:
            output_file.write(formatted_json)
        print("JSON文件导出成功!")
    else:
        print(f"请求失败,状态码:{response.status_code},错误信息:{response.text}")
    
    # 等待用户按回车退出
    input("执行完成,按回车键退出...")

if __name__ == "__main__":
    main()

这个方案的优势很明显:不需要依赖外部命令,能直接对请求结果做自定义处理(比如错误重试、分页查询),代码可读性和扩展性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:29:58