我一直试图了解一段时间"responses": {
"200": {
"description": "successful operation",
"schema": {
"type": "object",
"properties": {
"data": {
"$ref": "#/definitions/Client"
}
}
}
}
}
和Client
之间的区别。我知道最后一个是Python 3.5上的新内容,两者都基于subprocess.call
,但我还是无法理解其中的差异。
答案 0 :(得分:17)
subprocess.call()
的定义明确提到:
相当于:
run(...).returncode
(不支持输入和检查参数)
正如Python 3.5's subprocess document所说:
在Python 3.5之前,这三个函数(即
.call()
,.check_call()
,.check_output()
)包含了子级处理的高级API。现在,您可以在许多情况下使用run()
,但许多现有代码会调用这些函数。
通常的做法是,当某些功能被替换时,它们不会立即被弃用,但对于某些版本,它们有一个支持窗口。这有助于防止升级语言版本时旧代码的破坏。我不知道将来是否会替换.call()
。但根据文件,我所知道的是它们几乎相同。
答案 1 :(得分:3)
对于任何想知道使用哪个的人来说都很清楚:
subprocess.run()是它可以处理的所有用例的推荐方法。 suprocess documentation指出:
推荐的调用子流程的方法是将run()函数用于它可以处理的所有用例。对于更高级的用例,可以直接使用底层的Popen接口。
subprocess.call()是Older high-level API(Python 3.5之前的版本)的一部分。