When using the subprocess module, how can I do something with each line of a process's output? I don't want to wait for all the output, like when using communicate, but rather do something with it as soon as it's produced. Can this be done?
views:
20answers:
1
                +1 
                A: 
                
                
              
            Unfortunately the proposal to add this to subprocess is not yet accepted: http://www.python.org/dev/peps/pep-3145/
Here is a recipe for doing it with the existing subprocess: http://code.activestate.com/recipes/440554/
A commenter also notes this simple solution (with some downsides):
flags = fcntl.fcntl(subprocess.stdout, fcntl.F_GETFL)
fcntl.fcntl(subprocess.stdout, fcntl.F_SETFL, flags | os.O_NONBLOCK)
                  kanaka
                   2010-10-30 16:54:48