首页 > 解决方案 > 来自子进程命令 Python 的实时输出状态

问题描述

我正在编写一个脚本来使用 subprocess.check_output 获取 netstat 状态。

cmd = 'netstat -nlpt'

result = subprocess.check_output(cmd, shell=True, timeout=1800)
print(result.decode('utf-8'))

以上运行完美。有什么办法可以得到直播输出。我听说poll()函数可以完成这项工作。在subprocess命令的实时输出中,他们正在使用popen但我正在使用check_output请有人帮助我解决这个问题。谢谢!

标签: pythonpython-3.xshellsubprocess

解决方案


这个答案:

check_output和之间的区别在于Popen,whilepopen是一个非阻塞函数(意味着您可以继续执行程序而无需等待调用完成),check_output是阻塞的。

这意味着如果您正在使用subprocess.check_output(),则无法获得实时输出。

尝试切换到Popen().


推荐阅读