如何捕获子进程的标准输出?
我正在用Python写一个程序,听说我需要运行一个.exe文件。当这个.exe文件运行时,它会输出很多数据,我需要把其中某一行打印到屏幕上。我觉得我可能需要用到 subprocess.popen
或者类似的东西,但我对这个subprocess还不太了解,也不知道该怎么做。有没有简单的方法可以帮我完成这个任务?
2 个回答
28
@Paolo的解决方案非常适合你在程序执行完后想要打印输出的情况。如果你想在程序运行时就查看输出,你需要这样做:
process = subprocess.Popen(cmd, stdout=subprocess.PIPE)
while True:
out = process.stdout.readline(1)
if out == '' and process.poll() != None:
break
if out.startswith('myline'):
sys.stdout.write(out)
sys.stdout.flush()
22
像这样:
import subprocess
process = subprocess.Popen(["yourcommand"], stdout=subprocess.PIPE)
result = process.communicate()[0]