如何通過 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() + "\n")  # 先去除每一行末尾的制表符和換行符,然后再加上換行符,使寫入文件中的內容不會有空行

然后在該代碼路徑下找到ping.txt文件並打開顯示如下,挺整齊的:

 

 

 

如果不在代碼中第8行增加去除末尾的制表符和換行符的話,得出的結果會是這樣的,會出現空行情況

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM