subprocess.Popen不运行程序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
消息。
怎么了?
试试这样:
import subprocess
try:
subprocess.check_call(["call", "cmd", "/k", "echo Hello"], shell=True)
except subprocess.CalledProcessError:
print("Error")
含义:
call
- 在python可执行文件中调用shell
cmd
- 打开命令行窗口
/k
- 运行命令,然后返回到cmd
prompt(基本上,意味着持有cmd
窗口
如果要在新shell中启动所有内容,请在args中将call
替换为start
关键字。
要获得更多标志:在cmd提示符下运行cmd /?
。
注意:将方法或函数调用放在像try-except-finally
这样的错误处理块中是一个很好的编程。
以上是关于subprocess.Popen不运行程序的主要内容,如果未能解决你的问题,请参考以下文章
subprocess.Popen运行报错WindowsError: [Error 740]
python使用subprocess.Popen运行bat脚本时报不支持输入重新定向错误分析
查找 subprocess.Popen python 的执行时间