Bash/Shell

Executing shell commands in python

By ayed_amira , on 02/12/2020 , updated on 09/10/2020 - 2 minutes to read
Executing shell commands in python

Executing shell commands in python : When working with python, it is sometimes necessary to execute shell/bash codes directly from the python script.In this article, I’m going to show you several methods to do this directly from its python code.

The simplest way: Using the OS module

The first method to execute a shell command is to use the os.system () function:

import os
os.system('mkdir amiradata')

You can run this script and then you will see the result of the command in the terminal. The main problem with this command is that the result can’t be stored in a variable in the python code suite which can be annoying when you want to retrieve the list of a folder for example.

There is a function in the bone module that allows the result to be stored as a variable. The function os.popen() opens a channel from or to the command line. This means that we can access the stream in Python.

import os
stream = os.popen('echo AMIRADATA')
output = stream.read()
output

With this function you get the result: “AMIRADATA”. That’s great. 🙂

The best way : Using the subprocess module

This is the most versatile method and the recommended module for executing external commands in Python:

import subprocess
process = subprocess.Popen(['echo', 'AMIRADATA'],
                     stdout=subprocess.PIPE, 
                     stderr=subprocess.PIPE)
stdout, stderr = process.communicate()
stdout, stderr

You will notice that the output is of byte type . You can solve this problem by typing stdout.decode(‘utf-8’) or by adding universal_newlines=True when calling subprocess.Popen.

Conclusion

We have seen how to execute external commands in Python. The most efficient and versatile way is to use the subprocess module, it offers a lot of features that we have not listed in this mini tutorial, I advise you to consult the documentation (Subprocess module python) . For a short and fast script, you can simply use the os.system() or os.popen() functions.

If you have any questions or need clarification on any of these modules, please do not hesitate to leave a comment. I would be happy to help you! 🙂

Have a look at the Learning section if you enjoyed the tutorial “Executing shell commands in python”.

See you soon for a new tutorial !

ayed_amira

I'm a data scientist. Passionate about new technologies and programming I created this website mainly for people who want to learn more about data science and programming :)

Comments

Leave a comment

Your comment will be revised by the site if needed.