On 4 Ún, 11:49, Thomas Bellman <[EMAIL PROTECTED]> wrote: > [EMAIL PROTECTED] wrote: > > try: > > test = Popen(test_path, > > stdout=PIPE, > > stderr=PIPE, > > close_fds=True, > > env=test_environ) > > while test.poll() == None: > > ready = select.select([test.stderr], [], []) > > if test.stderr in ready[0]: > > t_stderr_new = test.stderr.readlines() > > if t_stderr_new != []: > > print "STDERR:", "\n".join(t_stderr_new) > > t_stderr.extend(t_stderr_new) > [...] > > The problem is, that it seems that all the output from the subprocess > > seems to be coming at once. Do I need to take a different approach? > > The readlines() method will read until it reaches end of file (or > an error occurs), not just what is available at the moment. You > can see that for your self by running: > > $ python -c 'import sys; print sys.stdin.readlines()' > > The call to sys.stdin.readlines() will not return until you press > Ctrl-D (or, I think, Ctrl-Z if you are using MS-Windows). > > However, the os.read() function will only read what is currently > available. Note, though, that os.read() does not do line-based > I/O, so depending on the timing you can get incomplete lines, or > multiple lines in one read. >
Right, I didn't realize that. I'll try the os.read() method. Reading what's available (as opposed to whole lines) shouldn't be an issue in this specific case. Thanks for the pointer! -- http://mail.python.org/mailman/listinfo/python-list