【发布时间】:2011-06-15 21:20:45
【问题描述】:
我的 python 代码生成子进程,并打印出 stdout 和 stderr 消息。 我需要以不同的方式打印它们。
我有以下代码来生成子进程并从中获取标准输出结果。
cmd = ["vsmake.exe", "-f"]
p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
for line in iter(p.stdout.readline, ''):
print line,
sys.stdout.flush()
pass
p.wait()
如何修改代码以检查子进程是否也通过 stderr 打印出消息?
添加
只要子进程打印出一些东西,我就需要打印出 stderr 和 stdout。而且是跨平台实现,所以应该可以在Mac/Linux/PC上运行。
【问题讨论】:
-
您想同时在 stdout 和 stderr 上实时打印消息吗?如果是,您可能需要在 Windows 上使用线程(因为既没有
select()也没有非阻塞 I/O)。 -
我编辑了我的答案,以便在这两个管道中的任何一个中打印一行后立即打印 stderr 和 stdout。
标签: python stdout stderr spawn child-process