程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

如何通过 subprocess 持续获取输出内容

发布于2020-02-10 15:44     阅读(857)     评论(0)     点赞(23)     收藏(3)


在实际应用中会用到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() + "\n")  # 先去除每一行末尾的制表符和换行符,然后再加上换行符,使写入文件中的内容不会有空行
复制代码

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

 

 

 

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

 

 

 



所属网站分类: 技术文章 > 博客

作者:sdhjsdh

链接:https://www.pythonheidong.com/blog/article/230858/03cad6f454d089d273de/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

23 0
收藏该文
已收藏

评论内容:(最多支持255个字符)