| | |
New to Python, help printing output of system calls
![]() |
•
•
Join Date: Aug 2008
Posts: 1
Reputation:
Solved Threads: 0
I'm new to Python and not anywhere near a competent programmer.
Anyway, if someone could help me get over this hump, I'd appreciate it.
I need to write a Python script that calls commands from the OS that may have lengthy output. Let's say I want to see the results of an rsync between two directories. I'd like to print the output in real-time to a web page.
My web page calls the Python script. No problem.
My Python script does a system call to rsync. No problem.
Here's were I get puzzled. No output from the rsynch makes it to the screen. It runs, but I can't see that anything is happening until the rsync is finished.
What would be the correct technique for doing this kind of thing? Basically I want to call system functions and have their status output appear just as I would have seen it from the command line.
Thanks for any tips.
Anyway, if someone could help me get over this hump, I'd appreciate it.
I need to write a Python script that calls commands from the OS that may have lengthy output. Let's say I want to see the results of an rsync between two directories. I'd like to print the output in real-time to a web page.
My web page calls the Python script. No problem.
My Python script does a system call to rsync. No problem.
Here's were I get puzzled. No output from the rsynch makes it to the screen. It runs, but I can't see that anything is happening until the rsync is finished.
What would be the correct technique for doing this kind of thing? Basically I want to call system functions and have their status output appear just as I would have seen it from the command line.
Thanks for any tips.
It would be easier if we could see the python line which runs the system call.
A possible solution to your problem is to start the system call without waiting for it's completion, using
A possible solution to your problem is to start the system call without waiting for it's completion, using
subprocess.Popen (see http://docs.python.org/lib/node533.html). Then, once you have a child process running, print it's output with a loop, like this python Syntax (Toggle Plain Text)
child = Popen(...) for line in child.stdout: print line
![]() |
Other Threads in the Python Forum
- Previous Thread: Opening pipelines with python ?
- Next Thread: Need Help With a Function....
| Thread Tools | Search this Thread |
abrupt alarm ansi anti apache approximation array assignment backend beginner binary bluetooth builtin calculator character cmd converter countpasswordentry curved customdialog cx-freeze dan08 data decimals dictionary directory exe file float format function gnu halp heads homework http ideas inches input itunes java leftmouse library line lines linux list lists loop module mouse mysqlquery number numbers numeric output parsing path phonebook pointer prime programming push py2exe pygame python random recursion redirect schedule screensaverloopinactive script scrolledtext software sqlite ssh statictext statistics string strings sudokusolver terminal text thread time tlapse tuple twoup ubuntu unicode urllib urllib2 variable ventrilo webservice wikipedia wordgame write wxpython xlib





