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"
嘿,我想阻止来自任何地方的任何标准输出并将其捕获到变量中。
现在的问题:
我有两种方法可以在标准输出中打印内容
方法一:
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"