I need to make some command line calls to linux and get the return from this, however doing it as below is just returning 0
when it should return a time value, like 00:08:19
, I am testing the exact same call in regular command line and it returns the time value 00:08:19
so I am confused as to what I am doing wrong as I thought this was how to do it in python.
import os retvalue = os.system("ps -p 2993 -o time --no-headers") print retvalue
Running the CommandThe shell makes a copy of itself, a process called forking. This copy of the shell replaces itself with the command, with all of the arguments that were processed earlier. This is known as an "exec," and the combined process is known as "fork-and-exec."
If a command is terminated by the control operator &, the shell executes the command in the background in a subshell. The shell does not wait for the command to finish, and the return status is 0.
What gets returned is the return value of executing this command. What you see in while executing it directly is the output of the command in stdout. That 0 is returned means, there was no error in execution.
Use popen etc for capturing the output .
Some thing along this line:
import subprocess as sub p = sub.Popen(['your command', 'arg1', 'arg2', ...],stdout=sub.PIPE,stderr=sub.PIPE) output, errors = p.communicate() print output
or
import os p = os.popen('command',"r") while 1: line = p.readline() if not line: break print line
ON SO : Popen and python
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With