我有一个脚本运行另一个带有子进程的script.py。 当它运行时,我正在解析所有输出的文本,指示我下一步该做什么。
def run_command(command):
global p
p = subprocess.Popen(command,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
shell=True)
return iter(p.stdout.readline, b'')
for line in run_command(command):
sys.stdout.write(line)
sys.stdout.flush()
if "Nothing to show" in line:
print "We can stop now"
os.killpg(os.getpgid(p.pid), signal.SIGTERM)
一切正常。但是script.py的输出是彩色的,我需要sys.stdout.write(line)
这些原始颜色。我可以使用subprocess.check_call
代替subprocess.Popen
。但是在这种情况下如何解析实时输出?
我需要解析script.py的输出,检查文本,然后用原始颜色打印。我上面的代码完成了前两个动作,但最后一个我无法找到。有什么合理的方法吗?