subprocess.Popen不运行程序

问题描述 投票:1回答:1

我想从我的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消息。

怎么了?

windows python-3.x cmd
1个回答
0
投票

试试这样:

import subprocess

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

except subprocess.CalledProcessError:
    print("Error")

含义:

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

cmd - 打开命令行窗口

/k - 运行命令,然后返回到cmdprompt(基本上,意味着持有cmd窗口

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

要获得更多标志:在cmd提示符下运行cmd /?

注意:将方法或函数调用放在像try-except-finally这样的错误处理块中是一个很好的编程。

© www.soinside.com 2019 - 2024. All rights reserved.