我一直试图理解一下,现在subprocess.call和subprocess.run之间的区别是什么.我知道最后一个是Python 3.5上的新内容,两者都基于subprocess.Popen,但我还不能理解其中的差异.
解决方法:
subprocess.call()
的定义明确提到:
It is equivalent to:
run(...).returncode
(except that the input and check parameters are not supported)
正如Python 3.5’s subprocess document所说:
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.
通常的做法是,当某些功能被替换时,它们不会立即被弃用,但对于某些版本,它们有一个支持窗口.这有助于防止升级语言版本时旧代码的破坏.我不知道.call()将来是否会被替换.但根据文件,我所知道的是它们几乎相同.