grabbing return codes from os.system() call

Damian Menscher menscher+python at uiuc.edu
Thu Mar 8 18:07:57 EST 2001


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
-- 
--==## Grad. student & Sys. Admin. @ U. Illinois at Urbana-Champaign ##==--
--==## <menscher at uiuc.edu> www.uiuc.edu/~menscher/ Ofc:(217)333-0038 ##==--
--==## Physics Dept, 1110 W Green, Urbana IL 61801 Fax:(217)333-9819 ##==--



More information about the Python-list mailing list