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.

Leave a Reply

Your email address will not be published. Required fields are marked *