首页 > 解决方案 > subprocess.Popen 不运行程序

问题描述

我想从我的 Python 脚本启动一个命令行程序。我正在使用 Python 3.6 在 Windows 10 上工作。以下代码启动命令行,但不打印任何内容。(如果我在这个命令行窗口中打印'echo hi',它工作正常)。

import subprocess
p=subprocess.Popen(['cmd','echo','hi'])

如果我尝试

p=subprocess.check_call(['cmd','echo','hi'])

我明白了CalledProcessError: Command '['cmd', 'echo', 'hi']' returned non-zero exit status 3221225786.

如果我尝试p=subprocess.check_call(['echo','hi']),我会收到FileNotFoundError: [WinError 2] The system cannot find the file specified消息。

怎么了?

标签: windowspython-3.xcmd

解决方案


试试这样:

import subprocess

try:
    subprocess.check_call(["call", "cmd", "/k", "echo Hello"], shell=True)

except subprocess.CalledProcessError:
    print("Error")

意义:

call- 在 python 可执行文件中调用 shell

cmd- 打开命令行窗口

/k- 运行命令然后返回cmd提示符(基本上就是按住cmd窗口

如果要在新 shell 中启动所有内容,请在 args 中替换call为关键字。start

更多标志:cmd /?在 cmd 提示符下运行。

注意:将方法或函数调用放在错误处理块(如try-except-finally.


推荐阅读