老实说,我只是不明白“非零”状态的行话,无法真正解释帮助页面上正在发生的事情或这意味着什么(甚至没有定义)。有哪些使用python调用其他脚本的例子,其中
的这些过程subprocess.call
子进程.check_output
子进程.popen
真的不一样吗? 您什么时候会使用其中任何一个,这些方法的明确细节是什么?如果我想要简单的操作系统调用,我应该改用 os.system 吗?
最佳答案
主要区别在于,popen
是一个非阻塞函数(意味着您可以继续执行程序而无需等待调用完成),call
和 check_output
正在阻塞。
另一个区别在于它们返回的内容:
-
popen
返回一个Popen 对象
。 -
call
返回returncode
属性。 -
check_output
返回命令执行的输出。
方法 call
和 check_output
事实上,阻塞 popen
的包装器,使用 Popen 对象
。
例如,您可以获得 returncode
通过调用 Popen.returncode()
来获取属性。
关于python - check_call check_output 调用和子进程模块中的 Popen 方法之间的实际区别是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38088631/