1. 程式人生 > >python 呼叫top命令獲取輸出資訊

python 呼叫top命令獲取輸出資訊

問題:如何在linux上通過python指令碼獲取命令列的顯示結果來進行處理?

解決方法:
1. python2.7版本有commands包
2. python3.x版本使用subprocess

下面是使用python3.4版本的示例
前面已解決使用python指令碼選出top命令中cpu使用率最高的程序,現在解決如何獲取top命令的回顯資訊。

在linux mint上執行top命令,可以看到不斷重新整理的top資訊。使用top -n 1 可以看到某一時刻的top資訊:
這裡寫圖片描述

對應的程式碼實現是:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import subprocess # #variable 'out' is subprocess output info top_info = subprocess.Popen(["top", "-n", "1"], stdout=subprocess.PIPE) out, err = top_info.communicate() #output info get from console has many unicode escape character ,such as \x1b(B\x1b[m\x1b[39;49m\x1b[K\n\x1b(B\x1b[m #use decode('unicode-escape') to process
out_info = out.decode('unicode-escape') print(out_info) lines = [] lines = out_info.split('\n')

執行結果:
這裡寫圖片描述

ps:如果沒有處理unicode-escape,得到的執行結果將是:
這裡寫圖片描述