python 呼叫top命令獲取輸出資訊
阿新 • • 發佈:2019-02-08
問題:如何在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,得到的執行結果將是: