python - 来自子进程命令 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请有人帮助我解决这个问题。谢谢!
解决方案
从这个答案:
check_output
和之间的区别在于Popen
,whilepopen
是一个非阻塞函数(意味着您可以继续执行程序而无需等待调用完成),check_output
是阻塞的。
这意味着如果您正在使用subprocess.check_output()
,则无法获得实时输出。
尝试切换到Popen()
.
推荐阅读
- sql - 如何在 SQL 中列出金额最高的 10 张发票及其总数
- shell - 如何仅重置 $(tput bold)?
- html - 你能在精灵表的某处设置 SVG 的高度和宽度属性吗?
- graphql - 在 AppSync/GraphQL 中,您如何处理需要来自多个数据源的连接数据的列表?
- c++ - 如何打印大括号之间包含的子字符串?
- javascript - 在 P5JS 中创建抽象日历
- javascript - Electron Google 登录:“此浏览器或应用程序可能不安全”
- c# - 我们应该在类库项目 asp .net core 中扩展 IServiceCollection 吗?
- c++ - Is there a binary search algorithm that takes a unary predicate rather than a search value?
- haskell - 如何在验证时迭代值