By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
429,313 Members | 2,798 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 429,313 IT Pros & Developers. It's quick & easy.

Simultaneous output parsing of child process?

P: n/a
Hello,

Hopefully someone can help me out with this issue...

I have a python script that needs to run a shell command and be able
to react to output from that command as it occurs (as opposed to
waiting for the whole command to complete and then parsing the
output). Is this possible with Python?

I created a test script that prints a line of output to stdout every 4
seconds or so. I want to create a "parent" script that kicks off the
test script, and prints data as soon as the test script sends anything
to the standard output (ie. every 4 seconds).

Furthermore, the solution needs to support Windows, several flavors of
UNIX and potentially LINUX.

I would ideally like to have the following type of behaviour:

childPipe = kickOffChild('test.py')
while <child process still active>:
line = childPipe.checkForStdOutput()
if line: # This should trigger once every 4 seconds in the
example above
print "OUTPUT:", line
print "Process completed."
Any help would be greatly appreciated.

Fraser
Jul 18 '05 #1
Share this Question
Share on Google+
2 Replies


P: n/a

"Fraser Gordon" <fr***********@cognos.com> wrote in message
news:de**************************@posting.google.c om...
Hello,

Hopefully someone can help me out with this issue...

I have a python script that needs to run a shell command and be able
to react to output from that command as it occurs (as opposed to
waiting for the whole command to complete and then parsing the
output). Is this possible with Python?

I created a test script that prints a line of output to stdout every 4
seconds or so. I want to create a "parent" script that kicks off the
test script, and prints data as soon as the test script sends anything
to the standard output (ie. every 4 seconds).

Furthermore, the solution needs to support Windows, several flavors of
UNIX and potentially LINUX.

Perhaps something that Donn Cave posted a few years ago helps, particularly
the bonus version ;-):

http://groups.google.com/groups?selm...washington.edu

It doesn't work as is on windows, but I've used it as a base on linux
several times.

HTH,

--
Emile van Sebille
em***@fenx.com

Jul 18 '05 #2

P: n/a

"Fraser Gordon" <fr***********@cognos.com> wrote in message
news:de**************************@posting.google.c om...
Hello,

Hopefully someone can help me out with this issue...

I have a python script that needs to run a shell command and be able
to react to output from that command as it occurs (as opposed to
waiting for the whole command to complete and then parsing the
output). Is this possible with Python?

I created a test script that prints a line of output to stdout every 4
seconds or so. I want to create a "parent" script that kicks off the
test script, and prints data as soon as the test script sends anything
to the standard output (ie. every 4 seconds).

Furthermore, the solution needs to support Windows, several flavors of
UNIX and potentially LINUX.

I would ideally like to have the following type of behaviour:

childPipe = kickOffChild('test.py')
while <child process still active>:
line = childPipe.checkForStdOutput()
if line: # This should trigger once every 4 seconds in the
example above
print "OUTPUT:", line
print "Process completed."
Any help would be greatly appreciated.
You need to use separate threads to process stdin, stdout and
stderr. Otherwise, you'll run the risk of a deadlock.

Unfortunately, the select service does not work on Windows
in all circumstances, so you can't simply switch between the
different files as needed.

John Roth

Fraser

Jul 18 '05 #3

This discussion thread is closed

Replies have been disabled for this discussion.