我有一个 Python 脚本,它使用 os.system 来运行 shell 命令。这些命令的输出会回显到屏幕上;我喜欢这个,需要保留它。我还希望我的脚本能够根据系统调用的输出内容采取行动。我怎样才能做到这一点?
在我的具体情况下,我打电话给os.system("svn update")
. 我需要将输出显示到屏幕上,并且(例如,在发生冲突的情况下),用户需要能够与 svn 进行交互。我希望能够让脚本根据输出采取行动 - 例如,如果它看到构建脚本已更新,则触发构建。
我不想自己处理 I/O(这似乎不必要地复杂),我不想将输出发送到我必须稍后清理的临时文件(尽管如果我必须的话我会这样做)。
编辑:
这是我的测试脚本:
#!/usr/bin/python -t
import subprocess
output = subprocess.check_output(["echo","one"])
print "python:", output
output = subprocess.check_output(["echo", "two"], shell=True)
print "python:", output
output = subprocess.check_output("echo three", shell=True)
print "python:", output
这是它的输出:
$ ./pytest
python: one
python:
python: three
(代码块没有显示的末尾有一个额外的空行。)我希望更像:
$ ./pytest
one
python: one
two
python:
three
python: three