【发布时间】:2017-07-06 15:33:19
【问题描述】:
我需要重定向来自stdout 的多个输出
例如:
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
【问题讨论】:
标签: python string redirect stdout