home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / pyth_os2.zip / python-1.0.2 / Lib / commands.py < prev    next >
Text File  |  1993-12-29  |  1KB  |  57 lines

  1. # Module 'commands'
  2. #
  3. # Various tools for executing commands and looking at their output and status.
  4. #
  5. # NB This only works (and is only relevant) for UNIX.
  6.  
  7.  
  8. # Get 'ls -l' status for an object into a string
  9. #
  10. def getstatus(file):
  11.     return getoutput('ls -ld' + mkarg(file))
  12.  
  13.  
  14. # Get the output from a shell command into a string.
  15. # The exit status is ignored; a trailing newline is stripped.
  16. # Assume the command will work with '{ ... ; } 2>&1' around it..
  17. #
  18. def getoutput(cmd):
  19.     return getstatusoutput(cmd)[1]
  20.  
  21.  
  22. # Ditto but preserving the exit status.
  23. # Returns a pair (sts, output)
  24. #
  25. def getstatusoutput(cmd):
  26.     import os
  27.     pipe = os.popen('{ ' + cmd + '; } 2>&1', 'r')
  28.     text = pipe.read()
  29.     sts = pipe.close()
  30.     if sts == None: sts = 0
  31.     if text[-1:] == '\n': text = text[:-1]
  32.     return sts, text
  33.  
  34.  
  35. # Make command argument from directory and pathname (prefix space, add quotes).
  36. #
  37. def mk2arg(head, x):
  38.     import os
  39.     return mkarg(os.path.join(head, x))
  40.  
  41.  
  42. # Make a shell command argument from a string.
  43. # Two strategies: enclose in single quotes if it contains none;
  44. # otherwise, enclose in double quotes and prefix quotable characters
  45. # with backslash.
  46. #
  47. def mkarg(x):
  48.     if '\'' not in x:
  49.         return ' \'' + x + '\''
  50.     s = ' "'
  51.     for c in x:
  52.         if c in '\\$"`':
  53.             s = s + '\\'
  54.         s = s + c
  55.     s = s + '"'
  56.     return s
  57.