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

如何在Python中运行带指定参数的shell脚本并输出结果到文件

可行实现方案

Python 中执行这类 shell 命令最常用的是标准库 subprocess,不需要安装第三方依赖,官方也更推荐用这个替代旧的 os.system 方案,两种常用的实现方式如下:

方案1:直接执行完整命令(适合参数固定的简单场景)

如果你的参数都是固定值、没有不可信的动态输入,可以直接用 shell=True 复用你终端的命令:

import subprocess

# 直接填入你终端执行的完整命令即可
cmd = "./api.sh -t token -r rules.json -s data.json > data_2.json"
# check=True 表示命令执行失败(返回非0状态码)时直接抛出异常,方便错误捕获
subprocess.run(cmd, shell=True, check=True)

方案2:拆分参数执行(更安全,动态传参优先选这个)

如果你的 token、文件路径是动态生成的,用 shell=True 有命令注入风险,建议拆分参数、用 Python 原生的文件操作做重定向:

import subprocess

# 按空格拆分命令参数,不需要写重定向符号
args = ["./api.sh", "-t", "你的动态token值", "-r", "rules.json", "-s", "data.json"]
# 直接把命令的标准输出写入目标文件
with open("data_2.json", "w", encoding="utf-8") as f:
    subprocess.run(args, check=True, stdout=f)

这种方式不需要额外启动 shell 进程,完全规避了参数注入的问题,动态传参时更稳妥。

常见问题排查

  • 如果提示没有权限运行脚本,先给 api.sh 加可执行权限:chmod +x api.sh,或者把命令里的 ./api.sh 换成 bash api.sh 也可以
  • 如果脚本不在当前 Python 脚本的工作目录下,可以给 subprocess.run 加 cwd="api.sh所在目录的绝对路径" 参数指定运行目录
  • 需要查看脚本的错误输出的话,可以加 stderr=subprocess.PIPE 参数,执行后从返回结果的 stderr 属性里读取错误信息

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 10:27:05