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

Windows 10下Python 3.6调用subprocess.Popen无法正常运行程序的问题

解决Windows下Python subprocess调用cmd无输出/报错的问题

嘿,我来帮你搞定这个问题!你遇到的情况是因为调用Windows的cmd.exe时没加必要的参数,导致它根本没执行你想要的echo hi命令。

问题根源

Windows的cmd程序需要通过/c参数来明确告诉它:“执行后面的命令,然后退出”。如果不加这个参数,cmd只会打开一个新的交互窗口,完全忽略你后面的echo和hi参数,自然看不到输出;而check_call报错的3221225786状态码,就是因为cmd接收到无效参数后异常退出导致的。

正确的实现方式

方式1:用subprocess.Popen并捕获输出

如果你想在Python里拿到命令的输出,可以这么写:

import subprocess
# 用/c参数让cmd执行命令后退出,同时配置输出捕获
p = subprocess.Popen(
    ['cmd', '/c', 'echo', 'hi'],
    stdout=subprocess.PIPE,
    stderr=subprocess.STDOUT,
    text=True
)
# 读取并打印输出
output, _ = p.communicate()
print(output)

要是你只想让输出直接显示在当前控制台,不用捕获的话,简化版就行:

import subprocess
subprocess.Popen(['cmd', '/c', 'echo hi'])

方式2:用subprocess.check_call

同样加上/c参数,就能正常执行不报错了:

import subprocess
subprocess.check_call(['cmd', '/c', 'echo', 'hi'])

额外小技巧

其实对于echo hi这种简单的内置命令,你也可以不用显式调用cmd,直接用shell=True让subprocess自动处理:

subprocess.check_call(['echo', 'hi'], shell=True)

不过个人更推荐显式用cmd /c的写法,这样逻辑更清晰,也能避免一些shell=True带来的潜在风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:04:09