捕获输出 (.output())
你可以运行一个命令并将 stdout 和 stderr 捕获到一个字符串中,使用 .output()。
这适用于
- 捕获来自在屏幕上到处绘制的程序的输出(如 top)。
- 捕获来自输出特殊终端字符(例如颜色字符)的程序的输出。
- 与使用用户输入的程序交互。
对于所有上述用例以及更多用例,command.interact() 更适合。
outputtext
#!/bin/bash
echo hello from stdout
>&2 echo "hello from stderr"
#!/bin/bash
echo bad output from stdout
>&2 echo "bad output from stderr"
exit 1
from commandlib import Command
成功
assert Command("./outputtext").output().strip() \
== "hello from stdout\nhello from stderr"
错误
Command("./raiseerror").output().strip()
commandlib.exceptions.CommandExitError:
"./raiseerror" failed (err code 1), output:
bad output from stdout
bad output from stderr