Python subprocess module to execute programs written in different languages - GeeksforGeeks

03 Aug, 2021
The subprocess module present in Python(both 2.x and 3.x) is used to run new applications or programs through Python code by creating new processes. It also helps to obtain the input/output/error pipes as well as the exit codes of various commands.
To execute different programs using Python two functions of the subprocess module are used:
1.subprocess.check_call(args, *, stdin=None, stdout=None, stderr=None, shell=False)Parameters:args=The command to be executed.Several commands can be passed as a string by separated by “;”.stdin=Value of standard input stream to be passed as (os.pipe()).stdout=Value of output obtained from standard output stream.stderr=Value of error obtained(if any) from standard error stream.shell=Boolean parameter.If True the commands get executed through a new shell environment.Return Value:The function returns the return code of the command.If the return code is zero, the function simply returns(command executed successfully) otherwise CalledProcessError is being raised.
2.subprocess.check_output(args, *, stdin=None, stderr=None, shell=False, universal_newlines=False)Parameters:args=The command to be executed. Several commands can be passed as a string by separated by “;”.stdin=Value of standard input stream to be passed as pipe(os.pipe()).stdout=Value of output obtained from standard output stream.stderr=Value of error obtained(if any) from standard error stream.shell=boolean parameter.If True the commands get executed through a new shell environment.universal_newlines=Boolean parameter.If true files containing stdout and stderr are opened in universal newline mode.Return Value:The function returns the return code of the command.If the return code is zero, the function simply returns the output as a byte string(command executed successfully) otherwise CalledProcessError is being raised.
Let us consider the following examples:
C program:
#include<stdio.h>int main(){    printf("Hello World from C");      // returning with any other non zero value    // would result in an exception    // when called from python    return 0;}
C++ program:
#include <iostream>using namespace std;int main(){    int a, b;    cin >> a >> b;    cout << "Hello World from C++.Values are:" << a << " " << b;    return 0;}
Java Program:
class HelloWorld {    public static void main(String args[])    {        System.out.print("Hello World from Java.");    }}
# Python 3 program to demonstrate subprocess # module  import subprocessimport os  def excuteC():      # store the return code of the c program(return 0)    # and display the output    s = subprocess.check_call("gcc HelloWorld.c -o out1;./out1", shell = True)    print(", return code", s)  def executeCpp():      # create a pipe to a child process    data, temp = os.pipe()      # write to STDIN as a byte object(convert string    # to bytes with encoding utf8)    os.write(temp, bytes("5 10\n", "utf-8"));    os.close(temp)      # store output of the program as a byte string in s    s = subprocess.check_output("g++ HelloWorld.cpp -o out2;./out2", stdin = data, shell = True)      # decode s to a normal string    print(s.decode("utf-8"))  def executeJava():      # store the output of    # the java program    s = subprocess.check_output("javac HelloWorld.java;java HelloWorld", shell = True)    print(s.decode("utf-8"))    # Driver functionif __name__=="__main__":    excuteC()        executeCpp()    executeJava()
Output:
Hello World from C, return code 0
Hello World from C++. Values are:5 10
Hello World from Java.

Note: Although subprocess module is OS independent these commands must only be executed in Linux environments. Also according to Python documentation passing shell=True can be a security hazard if combined with untrusted input.
SouravAChowdhury_97
Akanksha_Rai
manikarora059
python-utility
Python
Python Programs
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Python Dictionary
Read a file line by line in Python
How to Install PIP on Windows ?
Enumerate() in Python
Different ways to create Pandas Dataframe
Python program to convert a list to string
Defaultdict in Python
Python | Get dictionary keys as a list
Python | Split string into list of characters
Python | Convert a list to dictionary