26

In python I can run some system command using os or subprocess. The problem is that I can't get the output as a string. For example:

>>> tmp = os.system("ls")
file1 file2
>>> tmp
0

I have an older version of subprocess that doesn't have the function check_out, and I would prefer a solution that doesn't require to update that module since my code will run on a server I don't have full admin rights.

This problem seems trivial, yet I couldn't find a trivial solution

codeape
  • 94,365
  • 23
  • 147
  • 176
S4M
  • 4,401
  • 6
  • 35
  • 46

1 Answers1

73

Use os.popen():

tmp = os.popen("ls").read()

The newer way (> python 2.6) to do this is to use subprocess:

proc = subprocess.Popen('ls', stdout=subprocess.PIPE)
tmp = proc.stdout.read()
Hari Menon
  • 31,521
  • 13
  • 78
  • 107