Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python2.x中重定向stdtout_Python_String_Redirect_Stdout - Fatal编程技术网

在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)