мне нужно перенаправить несколько выходов из stdout
Например:Перенаправление stdtout в Python 2.x
def main(dict):
result = []
real_stdout = sys.stdout
fake_stdout = io.BytesIO()
sys.stdout = fake_stdout
print ("""long
string""")
sys.stdout = real_stdout
output_string = fake_stdout.getvalue()
result["1"] = output_string[:-1]
#fake_stdout.flush()
real_stdout = sys.stdout
sys.stdout = fake_stdout
print ("""new long string""")
sys.stdout = real_stdout
output_string = fake_stdout.getvalue()
fake_stdout.close()
sys.stdout = real_stdout
fake_stdout.close()
result["2"] = output_string[:-1]
return result
Я ожидаю, что выход будет
[{"1", 'long\n string'}, {"2", 'new long string'}]
Но я получаю
[{"1", 'long\n string'}, {"2", 'long\n stringnew long string'}]
Как очистить fake_stdout
перед вторым перенаправлением?
Это хороший способ сделать перенаправление и io.BytesIO()
можно использовать для сохранения любой длины строки, перенаправленной с stdout
?
Я не могу использовать capture_output from IPython.utils.io import