FAQ

[Python] Return value from os.system() call

Calder Coalson
Oct 28, 2007 at 2:27 pm
I was searching for ways to get the return value from os.system()
calls, when I came across this from 6 years ago. I tried what was
suggested in this thread, but
output = os.popen("/tmp/other").read()
returns
sh: line 1: /tmp/other: Permission denied

I'm relatively new to Python, hardly ever use the shell and am
currently running Python 2.5.5 on Mac OS 10.4.10

Cameron Laird wrote:
In article <98795o$kq8$0 at 216.39.151.169>, Donn Cave wrote:
Quoth Damian Menscher <menscher+python at uiuc.edu>:
I'm new to Python (as in, my experience is essentially the
tutorial),
but I've already come up with an interesting question:

How do I get the return code from an os.system call? I would have
expected I could do something like

---returncode---
#/bin/csh
echo do stuff
exit 3

and then in my python program I could do

print os.system('./returncode')

But it prints out 768. Not particularly useful, even after I
recognize
the trick of dividing by 256 (byte-swapping going on? No,
because a
return code of 768 reports as 0). Given that my real return codes
will be (possibly large) integers, this limitation will likely
cause
some serious problems down the line.

Even better would be a way of returning a string (the script I run
can be something other than csh, but it has to be a separate
script).
Ideas? I'm trying to avoid writing the string out to a file and
then
read the file back in to the python program....
Guys, guys; you are making it too hard on Mr. Menscher. My guess
is that he'd appreciate being told that, if he creates /tmp/other
with contents
#!/bin/sh
echo "This is a string from an external process."
he can then have fun with
import os
print os.popen("/tmp/other").read()
Thank you much -- this solves my problem. I'm sure I'll have more
questions in the near future, though....

Damian Menscher
reply

Search Discussions

1 response

  • Wildemar Wildenburger at Oct 28, 2007 at 2:47 pm

    Calder Coalson wrote:
    I was searching for ways to get the return value from os.system() calls,
    when I came across this from 6 years ago. I tried what was suggested in
    this thread, but
    output = os.popen("/tmp/other").read()
    returns
    sh: line 1: /tmp/other: Permission denied
    I would assume that this is an OS problem more than a python problem. Do
    you have write access to /tmp/other?
    I'm fairly sure its a permission thing.

    /W

Related Discussions

Discussion Navigation
viewthread | post