Python的subprocess.call和subprocess.run有什么区别

新手上路,请多包涵

一段时间以来,我一直在尝试了解 subprocess.callsubprocess.run 之间的区别。我知道最后一个是 Python 3.5 上的新内容,两者都基于 subprocess.Popen ,但我还不能理解其中的区别。

原文由 Andrés Orozco 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
1 个回答

subprocess.call() 的定义中明确提到:

等同于: run(...).returncode (除了不支持 输入校验 参数)

正如 Python 3.5 的 subprocess 文档 所说:

在 Python 3.5 之前,这三个函数(即 .call().check_call().check_output() )构成了子进程的高级 API。您现在可以在许多情况下使用 run() ,但许多现有代码调用这些函数。


通常的做法是,当某些功能被替换时,它们不会立即被弃用,但某些版本有一个支持窗口。这有助于防止在升级语言版本时破坏旧代码。我不知道 .call() 将来是否会被替换。但根据文档,我知道它们几乎相同。

原文由 Moinuddin Quadri 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题