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 <claird at starbase.neosoft.com> wrote: > In article <98795o$kq8$0 at 216.39.151.169>, Donn Cave <donn at oz.net> 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 -- http://mail.python.org/mailman/listinfo/python-list