我在 Django 中创建了一个自定义命令,将一些输出输出到标准输出。我如何拦截标准输出进行一些更改(例如添加前缀)并写入标准错误?这是测试任务,所以不要注意问题的不合逻辑性。
问问题
1029 次
2 回答
5
你可以StringIO
这样使用:
from io import StringIO
import sys
old_stdout = sys.stdout
sys.stdout = mystdout = StringIO()
print("test")
sys.stdout = old_stdout
s = mystdout.getvalue()
s = "prefix" + s
sys.stderr.write(s)
代码正在捕获stdout
到缓冲区中,然后读取缓冲区,添加prefix
并写入stderr
.
另见:
于 2013-08-18T11:30:02.310 回答
0
您可以使用sys.stdout
和sys.stderr
:
from sys import stdout, stderr
output_text = "Some text"
stdout.write('stdout: ' + output_text + '\n')
stderr.write('stderr: ' + output_text + '\n')
演示:
monty@xonix:~/py$ python so.py &> foo.txt
monty@xonix:~/py$ cat foo.txt
stderr: Some text
stdout: Some text
于 2013-08-18T11:30:28.983 回答