使用subprocess
模块时,如何对流程输出的每一行执行某些操作?我不想等待所有的输出,比如在使用communicate
时,而是在产生它时立即对它做一些事情。可以这样做吗?
答案 0 :(得分:1)
不幸的是,尚未接受将此添加到子流程的建议:http://www.python.org/dev/peps/pep-3145/
以下是使用现有子流程执行此操作的方法:http://code.activestate.com/recipes/440554/
评论者还注意到这个简单的解决方案(有一些缺点):
flags = fcntl.fcntl(subprocess.stdout, fcntl.F_GETFL)
fcntl.fcntl(subprocess.stdout, fcntl.F_SETFL, flags | os.O_NONBLOCK)