What’s the difference between Python’s subprocess.call and subprocess.run

The definition of subprocess.call() clearly mentions:

It is equivalent to:
run(...).returncode
(except that the input and check parameters are not supported)

As the Python 3.5’s subprocess document says:

Prior to Python 3.5, these three functions (i.e. .call(), .check_call(), .check_output()) comprised the high level API to subprocess. You can now use run() in many cases, but lots of existing code calls these functions.


It is a common practice that when some functions are replaced, they are not instantly deprecated but there is a support window for them for some versions. This helps in preventing the breakage of older code when the language version is upgraded. I do not know whether .call() is going to be replaced in the future or not. But based on the document, what I know is that they are pretty much same.

Leave a Comment