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

如何将Python subprocess的STDOUT重定向到STDERR?

将STDOUT重定向到STDERR的简洁方案

方案1:Shell重定向(简单直接)

如果允许通过Shell执行命令,直接借助Shell的标准重定向语法>&2即可,它会把命令的STDOUT(文件描述符1)重定向到STDERR(文件描述符2):

import subprocess

# 示例:执行echo命令,将输出定向到STDERR
subprocess.run("echo 'hello' >&2", shell=True)

方案2:无Shell方式(更安全)

如果要避免Shell注入风险,直接将子进程的stdout参数指定为父进程的STDERR流即可:

import subprocess
import sys

# 把子进程的STDOUT绑定到当前进程的STDERR
subprocess.run(["echo", "hello"], stdout=sys.stderr)

捕获输出的场景

如果需要捕获重定向后的内容(此时原STDOUT和STDERR都会输出到STDERR),可以结合stderr=subprocess.PIPE来获取:

import subprocess
import sys

result = subprocess.run(
    ["echo", "hello"],
    stdout=sys.stderr,
    stderr=subprocess.PIPE,
    text=True
)
# 这里的result.stderr包含原STDOUT的内容
print("捕获到的内容:", result.stderr)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 21:15:41