使用子流程时如何在python中复制tee行为?
我正在寻找一种Python解决方案,该解决方案将允许我将命令的输出保存到文件中而不将其从控制台隐藏。 仅供参考:我想问的是tee(作为Unix命令行实用程序),而不是Python intertools模块中的同名函数。 细节 Python解决方案(不调用tee,在Windows下不可用) 我不需要为调用的进程提供任何输入到stdin 我无法控制被调用的程序。我所知道的是,它将向stdout和stderr输出一些内容,并返回退出代码。 在调用外部程序时工作(子过程) 要对工作都stderr和stdout 之所以能够区分stdout和stderr是因为我可能只想在控制台上显示其中之一,或者我可以尝试使用其他颜色输出stderr-这意味着stderr = subprocess.STDOUT它将不起作用。 实时输出(渐进式)-该过程可以运行很长时间,我无法等待它完成。 Python 3兼容代码(重要) 参考文献 到目前为止,我发现了一些不完整的解决方案: http://devlishgenius.blogspot.com/2008/10/logging-in-real-time-in-python.html(mkfifo仅在Unix上有效) http://blog.kagesenshi.org/2008/02/teeing-python-subprocesspopen-output.html(完全无效) 图表http://blog.i18n.ro/wp-content/uploads/2010/06/Drawing_tee_py.png 当前代码(第二次尝试) #!/usr/bin/python from __future__ import print_function import sys, os, time, subprocess, io, threading cmd = "python -E test_output.py" from threading import Thread class StreamThread ( Thread ): def __init__(self, buffer): …