python库临时创建stderr/stdout
tee的Python项目详细描述
python库将stderr/stdout转换为文件
安装
pip install tee
快速启动
tee_test.py
importsysfromteeimportStdoutTee,StderrTeewithStdoutTee("mystdout.txt"),StderrTee("mystderr.txt"):sys.stdout.write("[stdout] hello\n")sys.stderr.write("[stderr] hello\n")sys.stdout.write("[stdout] world\n")sys.stderr.write("[stderr] world\n")sys.stdout.write("[stdout] not going to be written to file\n")sys.stderr.write("[stderr] not going to be written to file\n")
$ python tee_test.py [stdout] hello [stderr] hello [stdout] world [stderr] world [stdout] not going to be written to file [stderr] not going to be written to file $ cat mystdout.txt [stdout] hello [stdout] world $ cat mystderr.txt [stderr] hello [stderr] world
过滤器
stdoutte和stderrtee将过滤器作为之前运行的参数 写入文件或流。这些过滤器是可调用的 要作为输入写入并返回None或New的消息 信息。
当你想写彩色输出时,我发现它们特别有用。 到流,但在向 文件,尤其是在使用结构时。
importreimportteefromfabric.apiimportrundef_remove_control_chars(message):returnre.sub(r'(\x9B|\x1B\[)[0-?]*[ -\/]*[@-~]',"",message)defecho_color():withtee.StdoutTee("fabout.txt",mode="a",file_filters=[_remove_control_chars]):run("""echo -e "\E[1;32mHello World \E[4;31mLets add some\E[0m\E[1;34m color" && tput sgr0""")
fab -H localhost echo_color