zoukankan      html  css  js  c++  java
  • 如何通过 subprocess 持续获取输出内容

    在实际应用中会用到subprocess的Popen方法执行一些命令,而我们需要通过执行这个命令的来获取输出进行一些信息记录或者分析使用,如果是很快就可以执行完的那还好,有时需要持续跟踪内容的输出,比如大型服务器的内存、CPU、进程监控等,这是一个持续的过程,那么就需要想方设法将输出的内容实时的记录到控制台或者文件中,下面是举例一个ping指令,后面带上 -t 参数获取实时的ping情况,代码如下:

    1 # -*- coding:utf-8 -*-
    2 
    3 import subprocess
    4 cmd = r"ping www.baidu.com -t"
    5 result = subprocess.Popen(cmd, stdout=subprocess.PIPE)  # 将输出内容存至缓存中
    6 while True:  # 将内容持续输出
    7     with open("ping.txt", "a", encoding="utf-8") as f:
    8         f.write(result.stdout.readline().decode("gbk").strip() + "
    ")  # 先去除每一行末尾的制表符和换行符,然后再加上换行符,使写入文件中的内容不会有空行

    然后在该代码路径下找到ping.txt文件并打开显示如下,挺整齐的:

    如果不在代码中第8行增加去除末尾的制表符和换行符的话,得出的结果会是这样的,会出现空行情况

  • 相关阅读:
    拷贝构造函数的用法
    虚基类的用法
    函数模板的用法,以及类外定义的注意事项
    怎么学好python?
    树状数组单点更新和区间查询
    线段树的基本操作
    快排算法的实现
    react-redux 中 connect 的常用写法
    ant-design表单处理和常用方法及自定义验证
    ionic 签名、打包
  • 原文地址:https://www.cnblogs.com/aziji/p/12029792.html
Copyright © 2011-2022 走看看