我想从我的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
消息。
有什么问题?
答案 0 :(得分:0)
尝试这样:
import subprocess
try:
subprocess.check_call(["call", "cmd", "/k", "echo Hello"], shell=True)
except subprocess.CalledProcessError:
print("Error")
含义:
call
-在python可执行文件中调用shell
cmd
-打开命令行窗口
/k
-运行Command,然后返回到cmd
提示符(基本上,意味着按住cmd
窗口
如果要在新Shell中启动所有内容,请将args中的call
替换为start
关键字。
有关更多标志::在cmd提示符下运行cmd /?
。
注意:将方法或函数调用放在诸如try-except-finally
之类的错误处理块中是一种很好的编程方法。