I've been trying to understand for a while now what's the difference between subprocess.call
and subprocess.run
. I know the last one is new on Python 3.5 and both are based on subprocess.Popen
, but I'm not able to understand the difference yet.
问题:
回答1:
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 userun()
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.