python - check_call check_output 调用和子进程模块中的 Popen 方法之间的实际区别是什么?

标签 python subprocess popen os.system

老实说,我只是不明白“非零”状态的行话,无法真正解释帮助页面上正在发生的事情或这意味着什么(甚至没有定义)。有哪些使用python调用其他脚本的例子,其中

的这些过程

subprocess.call 子进程.check_output 子进程.popen

真的不一样吗? 您什么时候会使用其中任何一个,这些方法的明确细节是什么?如果我想要简单的操作系统调用,我应该改用 os.system 吗?

最佳答案

主要区别在于,popen是一个非阻塞函数(意味着您可以继续执行程序而无需等待调用完成),callcheck_output正在阻塞

另一个区别在于它们返回的内容:

方法 callcheck_output事实上,阻塞 popen 的包装器,使用 Popen 对象。 例如,您可以获得 returncode通过调用 Popen.returncode() 来获取属性。

关于python - check_call check_output 调用和子进程模块中的 Popen 方法之间的实际区别是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38088631/

相关文章:

包含 3 个项目的 Python map

python - sqlalchemy外键与父类的关系

python - 在线程中显示对话框

Python 子进程 : Too Many Open Files

php shell_exec 实时更新

带有更大符号 (>) 的 Python 子进程调用不起作用

python - Pygame 找不到所需的字体

python - Subprocess 语句在 python 控制台中有效,但在 Serverdensity 插件中无效?

python子进程popen以不同用户身份执行

Python 脚本失败并下降 0 CPU 使用率