Python 标准输出和 stdout.buffer 捕获

Python stdout and stdout.buffer capture

嘿,我想阻止来自任何地方的任何标准输出并将其捕获到变量中。

现在的问题:

我有两种方法可以在标准输出中打印内容

方法一:

print("Normal Print")

方法二:

fds: List[BinaryIO] = [sys.stdin.buffer, sys.stdout.buffer, sys.stderr.buffer]
fds[1].write(b"%d\n" % a)
fds[1].flush()

现在我尝试了这样的事情

from io import BufferedWriter, BytesIO, StringIO

mystdout = StringIO()
mystdout.buffer = BufferedWriter(raw=BytesIO())
sys.stdout = mystdout

但是我没有得到任何输出。

存档的最佳方法是什么?

完全没有输出是什么意思?它在变量中:

mystdout = StringIO()
mystdout.buffer = BufferedRandom(raw=BytesIO()) # You can read from BufferedRandom
sys.stdout = mystdout
sys.stdout.buffer.write(b"BUFFER")
print("PRINT")
sys.stdout = sys.__stdout__ # Restore original stdout

print(mystdout.getvalue()) # PRINT
mystdout.buffer.seek(0)
print(mystdout.buffer.read()) b"BUFFER"