在Python2.x中重定向stdtout
我需要重定向来自在Python2.x中重定向stdtout,python,string,redirect,stdout,Python,String,Redirect,Stdout,我需要重定向来自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() resu
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'}]
如何在第二次重定向之前清除伪\u stdout
这是进行重定向和io的好方法。BytesIO()
可用于保存从stdout
重定向的任何长度字符串
我不能使用IPython.utils.io导入的
capture\u输出
我通常使用StringIO进行类似的使用,作为一个类似文件的对象,它有truncate
方法,也许BytesIO也有。尝试false\u stout.truncate(0)