Running a bash script from Python

Viewed 17175

I need to run a bash script from Python. I got it to work as follows:

import os
os.system("xterm -hold -e scipt.sh")

That isn't exactly what I am doing but pretty much the idea. That works fine, a new terminal window opens and I hold it for debugging purposes, but my problem is I need the python script to keep running even if that isn't finished. Any way I can do this?

1 Answers

I recommend you use subprocess module: docs

And you can

import subprocess

cmd = "xterm -hold -e scipt.sh"
# no block, it start a sub process.
p = subprocess.Popen(cmd , shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

# and you can block util the cmd execute finish
p.wait()
# or stdout, stderr = p.communicate()

For more info, read the docs,:).

edited misspellings

Related