我正在尝试从python运行程序并根据其退出状态打印输出。下面的代码直接输出到我的vim屏幕(弄乱它),而不是打开带输出的shell。
python << EOF
import subprocess
import vim
cmd = "BAD_COMMAND"
p = subprocess.Popen(cmd, shell=True)
retcode = p.poll()
if retcode > 0:
output_of_error = p.communicate()[0]
vim.command("!echo show errors here")
EOF
答案 0 :(得分:2)
您希望将子流程重定向到管道:
p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
communicate()
将返回一个包含该进程的stdout
和stderr
内容的2元组。