python – Assign output of os.system to a variable and prevent it from being displayed on the screen
python – Assign output of os.system to a variable and prevent it from being displayed on the screen
From Equivalent of Bash Backticks in Python, which I asked a long time ago, what you may want to use is popen
:
os.popen(cat /etc/services).read()
From the docs for Python 3.6,
This is implemented using subprocess.Popen; see that class’s
documentation for more powerful ways to manage and communicate with
subprocesses.
Heres the corresponding code for subprocess
:
import subprocess
proc = subprocess.Popen([cat, /etc/services], stdout=subprocess.PIPE, shell=True)
(out, err) = proc.communicate()
print program output:, out
You might also want to look at the subprocess
module, which was built to replace the whole family of Python popen
-type calls.
import subprocess
output = subprocess.check_output(cat /etc/services, shell=True)
The advantage it has is that there is a ton of flexibility with how you invoke commands, where the standard in/out/error streams are connected, etc.
python – Assign output of os.system to a variable and prevent it from being displayed on the screen
The commands module is a reasonably high-level way to do this:
import commands
status, output = commands.getstatusoutput(cat /etc/services)
status is 0, output is the contents of /etc/services.