1
我在Django中做了一個自定義的命令,在那裏向stdout進行一些輸出。 如何攔截stdout進行一些更改(例如添加前綴)並寫入stderr? 這是測試任務,所以不要關注問題的不合邏輯性。如何攔截Python中stdout的內容?
我在Django中做了一個自定義的命令,在那裏向stdout進行一些輸出。 如何攔截stdout進行一些更改(例如添加前綴)並寫入stderr? 這是測試任務,所以不要關注問題的不合邏輯性。如何攔截Python中stdout的內容?
您可以使用StringIO
這樣的:
from StringIO 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
。
另見:
您可以使用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')
演示:
[email protected]:~/py$ python so.py &> foo.txt
[email protected]:~/py$ cat foo.txt
stderr: Some text
stdout: Some text