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)