How to Run System or Shell Commands in Python?

How do I python run command or execute a system command within Python?

How can I call an external command in Python as if I had typed it in a shell or command prompt?

One straightforward way to execute a system command in Python is by using os.system(). It’s simple and works for most basic needs. When you want to python run command and don’t need the output, just the exit status, this is a good choice. For example, you can use os.system("ls") to list the contents of a directory in Unix-like systems. However, it’s worth noting that os.system() doesn’t provide much control over the output or errors.

If you want more flexibility, subprocess.run() is a better option. This method allows you to capture the output, handle errors, and even provide inputs to commands. For instance, if you want to python run command and save its output for further processing, you can use something like subprocess.run(["ls"], capture_output=True, text=True). This way, you get the directory contents directly as a string. It’s perfect when you need both the command’s output and its error details in one go.

Sometimes, you might need to see the output as the command runs, especially for long-running processes. In that case, subprocess.Popen() is the tool for the job. It gives you the ability to process output line-by-line in real time. For example, to python run command and continuously monitor a ping test, you can use:

from subprocess import Popen, PIPE  
with Popen(["ping", "-c", "3", "google.com"], stdout=PIPE, text=True) as process:  
    for line in process.stdout:  
        print(line.strip())  

This is especially helpful when you need responsive feedback during execution.