Menu Close

How to use subprocess.Popen to connect multiple processes by pipes with Python?

Sometimes, we want to use subprocess.Popen to connect multiple processes by pipes with Python.

In this article, we’ll look at how to use subprocess.Popen to connect multiple processes by pipes with Python.

How to use subprocess.Popen to connect multiple processes by pipes with Python?

To use subprocess.Popen to connect multiple processes by pipes with Python, we can use the subprocess.PIPE property.

For instance, we write

import subprocess

some_string = b'input_data'

sort_out = open('outfile.txt', 'wb', 0)
sort_in = subprocess.Popen('sort', stdin=subprocess.PIPE, stdout=sort_out).stdin
subprocess.Popen(['awk', '-f', 'script.awk'], stdout=sort_in, 
                 stdin=subprocess.PIPE).communicate(some_string)

to pipe the sort_out file’s content to sort with subprocess.PIPE.

And then we pipe the result from sort to awk with subprocess.PIPE.

Conclusion

To use subprocess.Popen to connect multiple processes by pipes with Python, we can use the subprocess.PIPE property.

Posted in Python, Python Answers