0
使用subprocess
模块时,如何对进程输出的每一行执行某些操作?我不想等所有的输出,比如当使用communicate
时,而是在它生成后立即采取措施。这可以做到吗?使用属于进程输出的每行进行操作
使用subprocess
模块时,如何对进程输出的每一行执行某些操作?我不想等所有的输出,比如当使用communicate
时,而是在它生成后立即采取措施。这可以做到吗?使用属于进程输出的每行进行操作
不幸的是把它添加到子的提议尚未被接受: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)