首页 > 关于python文本处理

关于python文本处理

top - 11:05:30 up 257 days, 11:45,  7 users,  load average: 9.81, 9.78, 9.02
Tasks: 924 total,   1 running, 923 sleeping,   0 stopped,   0 zombie
Cpu(s): 22.8%us,  4.0%sy,  2.2%ni, 69.9%id,  0.4%wa,  0.0%hi,  0.7%si,  0.0%st
Cpu(s): 22.8%us,  4.0%sy,  2.2%ni, 69.9%id,  0.4%wa,  0.0%hi,  0.7%si,  0.0%st
Mem:  264484672k total, 263624144k used,   860528k free,   192464k buffers
Swap:  7167992k total,  1983740k used,  5184252k free, 104549512k cached

   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                  
398276 wls81     20   0 2516m 2.3g 1116 S 142.6  0.9   6225:57 /wls/wls81/bea1036/jrockit-jdk1.6.0_37-R28.2.5-4.1.0/bin/java -Xnoopt -server -Xms2048m -Xmx2048m -Xgc:g
441435 wls81     20   0 2497m 2.3g 1852 S 81.8  0.9   2222:38 /wls/wls81/bea1036/jrockit-jdk1.6.0_37-R28.2.5-4.1.0/bin/java -Xnoopt -server -Xms2048m -Xmx2048m -Xgc:ge
441434 wls81     20   0 2495m 2.3g 1836 S 71.3  0.9   2274:38 /wls/wls81/bea1036/jrockit-jdk1.6.0_37-R28.2.5-4.1.0/bin/java -Xnoopt -server -Xms2048m -Xmx2048m -Xgc:ge
 45424 logop     20   0  156m  25m 1888 S 64.4  0.0   3614:38 /usr/bin/perl ./bin/logmonitor_hm                                                                        
 45424 logop     20   0  156m  25m 1888 S 64.4  0.0   3614:38 /usr/bin/perl ./bin/logmonitor_hm                                                                        
257784 wls81     20   0 2531m 2.3g 1196 S 60.9  0.9  12937:31 /wls/wls81/bea1036/jrockit-jdk1.6.0_37-R28.2.5-4.1.0/bin/java -Xnoopt -XX:FlightRecorder=false -server -X
308099 wls81     20   0 3067m 2.8g 1288 S 60.9  1.1   2658:46 /wls/wls81/bea1032/jrockit_160_14_R27.6.5-32/bin/java -Xnoopt -server -Xms2048m -Xmx2048m -Xgc:genpar -XX
247004 wls81     20   0 2533m 2.4g  992 S 53.9  0.9   9546:21 /wls/wls81/bea1036/jrockit-jdk1.6.0_37-R28.2.5-4.1.0/bin/java -Xnoopt -server -Xms2048m -Xmx2048m -Xgc:ge
441393 wls81     20   0 2504m 2.3g 1760 S 52.2  0.9   2181:07 /wls/wls81/bea1036/jrockit-jdk1.6.0_37-R28.2.5-4.1.0/bin/java -Xnoopt -server -Xms2048m -Xmx2048m -Xgc:ge
331830 wls81     20   0 2545m 2.3g 1196 S 48.7  0.9  11675:56 /wls/wls81/bea1036/jrockit-jdk1.6.0_37-R28.2.5-4.1.0/bin/java -Xnoopt -XX:FlightRecorder=false -server -X
303226 wls81     20   0 2509m 2.3g 1192 S 47.0  0.9  11571:50 /wls/wls81/bea1036/jrockit-jdk1.6.0_37-R28.2.5-4.1.0/bin/java -Xnoopt -XX:FlightRecorder=false -server -X
 65062 root      20   0 1313m 476m 3896 S 41.7  0.2   2409:03 /wls/heka/bin/hekad -config=/wls/heka/config/hekad.toml                                                  
488983 wls81     20   0 2578m 2.3g 1296 S 41.7  0.9   8216:31 /wls/wls81/bea1036/jrockit-jdk1.6.0_37-R28.2.5-4.1.0/bin/java -Xnoopt -server -Xms2048m -Xmx2048m -Xgc:ge
286462 wls81     20   0 2505m 2.3g 1204 S 40.0  0.9  11712:49 /wls/wls81/bea1036/jrockit-jdk1.6.0_37-R28.2.5-4.1.0/bin/java -Xnoopt -XX:FlightRecorder=false -server -X
203618 wls81     20   0 2448m 2.2g 2564 S 34.8  0.9  60:00.84 /wls/wls81/bea1036/jrockit-jdk1.6.0_37-R28.2.5-4.1.0/bin/java -Xnoopt -server -Xms2048m -Xmx2048m -Xgc:ge
 93385 wls81     20   0 2542m 2.4g 1656 S 33.0  0.9   1354:25 /wls/wls81/bea1036/jrockit_160_29_D1.2.0-10/bin/java -Xnoopt -XX:FlightRecorder=false -server -Xms2048m -
105110 wls81     20   0 2558m 2.4g 1516 S 29.6  0.9   1343:39 /wls/wls81/bea1036/jrockit_160_29_D1.2.0-10/bin/java -Xnoopt -XX:FlightRecorder=false -server -Xms2048m -
317703 wls81     20   0 2508m 2.3g 1192 S 29.6  0.9  11650:10 /wls/wls81/bea1036/jrockit-jdk1.6.0_37-R28.2.5-4.1.0/bin/java -Xnoopt -XX:FlightRecorder=false -server -X
349108 wls81     20   0 2514m 2.3g 1248 S 29.6  0.9  11613:52 /wls/wls81/bea1036/jrockit-jdk1.6.0_37-R28.2.5-4.1.0/bin/java -Xnoopt -XX:FlightRecorder=false -server -X
364167 wls81     20   0 2508m 2.3g 1196 S 29.6  0.9  11649:27 /wls/wls81/bea1036/jrockit-jdk1.6.0_37-R28.2.5-4.1.0/bin/java -Xnoopt -XX:FlightRecorder=false -server -X
488979 wls81     20   0  155m  12m  824 S  0.0  0.0   0:00.00 /usr/bin/perl /wls/serveradmin/bin/serveradmin -s pa18-shop-autox-c -a redeployall                       


top - 11:05:32 up 257 days, 11:45,  7 users,  load average: 9.81, 9.78, 9.02
Tasks: 928 total,   1 running, 927 sleeping,   0 stopped,   0 zombie
Cpu(s): 26.2%us, 13.1%sy,  3.1%ni, 56.1%id,  0.0%wa,  0.0%hi,  1.6%si,  0.0%st
Mem:  264484672k total, 263636784k used,   847888k free,   192464k buffers
Swap:  7167992k total,  1983740k used,  5184252k free, 104558760k cached

   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                  
398276 wls81     20   0 2516m 2.3g 1116 S 352.4  0.9   6226:03 /wls/wls81/bea1036/jrockit-jdk1.6.0_37-R28.2.5-4.1.0/bin/java -Xnoopt -server -Xms2048m -Xmx2048m -Xgc:g
 65062 root      20   0 1313m 476m 3896 S 101.2  0.2   2409:05 /wls/heka/bin/hekad -config=/wls/heka/config/hekad.toml                                                 
441434 wls81     20   0 2495m 2.3g 1836 S 77.3  0.9   2274:40 /wls/wls81/bea1036/jrockit-jdk1.6.0_37-R28.2.5-4.1.0/bin/java -Xnoopt -server -Xms2048m -Xmx2048m -Xgc:ge
441435 wls81     20   0 2497m 2.3g 1852 S 76.4  0.9   2222:39 /wls/wls81/bea1036/jrockit-jdk1.6.0_37-R28.2.5-4.1.0/bin/java -Xnoopt -server -Xms2048m -Xmx2048m -Xgc:ge
441393 wls81     20   0 2504m 2.3g 1760 S 69.9  0.9   2181:09 /wls/wls81/bea1036/jrockit-jdk1.6.0_37-R28.2.5-4.1.0/bin/java -Xnoopt -server -Xms2048m -Xmx2048m -Xgc:ge
441425 wls81     20   0 2494m 2.3g 1760 S 50.6  0.9   2280:43 /wls/wls81/bea1036/jrockit-jdk1.6.0_37-R28.2.5-4.1.0/bin/java -Xnoopt -server -Xms2048m -Xmx2048m -Xgc:ge
257784 wls81     20   0 2531m 2.3g 1196 S 46.9  0.9  12937:33 /wls/wls81/bea1036/jrockit-jdk1.6.0_37-R28.2.5-4.1.0/bin/java -Xnoopt -XX:FlightRecorder=false -server -X
349108 wls81     20   0 2514m 2.3g 1248 S 44.2  0.9  11613:53 /wls/wls81/bea1036/jrockit-jdk1.6.0_37-R28.2.5-4.1.0/bin/java -Xnoopt -XX:FlightRecorder=false -server -X
247004 wls81     20   0 2533m 2.4g  992 S 40.5  0.9   9546:22 /wls/wls81/bea1036/jrockit-jdk1.6.0_37-R28.2.5-4.1.0/bin/java -Xnoopt -server -Xms2048m -Xmx2048m -Xgc:ge
286462 wls81     20   0 2505m 2.3g 1204 S 40.5  0.9  11712:50 /wls/wls81/bea1036/jrockit-jdk1.6.0_37-R28.2.5-4.1.0/bin/java -Xnoopt -XX:FlightRecorder=false -server -X
331830 wls81     20   0 2549m 2.3g 1196 S 36.8  0.9  11675:57 /wls/wls81/bea1036/jrockit-jdk1.6.0_37-R28.2.5-4.1.0/bin/java -Xnoopt -XX:FlightRecorder=false -server -X
484805 wls81     20   0 2495m 2.3g 1192 S 35.9  0.9  11753:16 /wls/wls81/bea1036/jrockit-jdk1.6.0_37-R28.2.5-4.1.0/bin/java -Xnoopt -XX:FlightRecorder=false -server -X
448678 wls81     20   0 1610m 1.4g 1312 S 33.1  0.6   2538:35 /wls/wls81/bea1036/jrockit_160_29_D1.2.0-10/bin/java -Xnoopt -XX:FlightRecorder=false -server -Xms1024m -
364167 wls81     20   0 2508m 2.3g 1196 S 29.4  0.9  11649:28 /wls/wls81/bea1036/jrockit-jdk1.6.0_37-R28.2.5-4.1.0/bin/java -Xnoopt -XX:FlightRecorder=false -server -X
448653 wls81     20   0 1559m 1.4g 1316 S 29.4  0.5   2482:42 /wls/wls81/bea1036/jrockit_160_29_D1.2.0-10/bin/java -Xnoopt -XX:FlightRecorder=false -server -Xms1024m -
 82824 wls81     20   0 2703m 2.4g 2504 S 28.5  1.0  38:38.39 /wls/wls81/bea1032/jrockit_160_14_R27.6.5-32/bin/java -Xnoopt -server -Xms2048m -Xmx2048m -Xgc:gencon -Xn
203618 wls81     20   0 2448m 2.2g 2564 S 26.7  0.9  60:01.35 /wls/wls81/bea1036/jrockit-jdk1.6.0_37-R28.2.5-4.1.0/bin/java -Xnoopt -server -Xms2048m -Xmx2048m -Xgc:ge
303226 wls81     20   0 2509m 2.3g 1192 S 26.7  0.9  11571:51 /wls/wls81/bea1036/jrockit-jdk1.6.0_37-R28.2.5-4.1.0/bin/java -Xnoopt -XX:FlightRecorder=false -server -X
317703 wls81     20   0 2508m 2.3g 1192 S 26.7  0.9  11650:10 /wls/wls81/bea1036/jrockit-jdk1.6.0_37-R28.2.5-4.1.0/bin/java -Xnoopt -XX:FlightRecorder=false -server -X

我为了监控系统性能,用 top -c -b -d 30 -n 600 > test 这样抓了一堆信息。
现在我想提取出当cpu > 80% 是进程的信息
例如:

top - 11:05:32 up 257 days, 11:45,  7 users,  load average: 9.81, 9.78, 9.02
Tasks: 928 total,   1 running, 927 sleeping,   0 stopped,   0 zombie
Cpu(s): 82.2%us, 13.1%sy,  3.1%ni, 56.1%id,  0.0%wa,  0.0%hi,  1.6%si,  0.0%st
Mem:  264484672k total, 263636784k used,   847888k free,   192464k buffers
Swap:  7167992k total,  1983740k used,  5184252k free, 104558760k cached

   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                  
398276 wls81     20   0 2516m 2.3g 1116 S 352.4  0.9   6226:03 /wls/wls81/bea1036/jrockit-jdk1.6.0_37-R28.2.5-4.1.0/bin/java -Xnoopt -server -Xms2048m -Xmx2048m -Xgc:g
 65062 root      20   0 1313m 476m 3896 S 101.2  0.2   2409:05 /wls/heka/bin/hekad -config=/wls/heka/config/hekad.toml                                                 
441434 wls81     20   0 2495m 2.3g 1836 S 77.3  0.9   2274:40 /wls/wls81/bea1036/jrockit-jdk1.6.0_37-R28.2.5-4.1.0/bin/java -Xnoopt -server -Xms2048m -Xmx2048m -Xgc:ge
441435 wls81     20   0 2497m 2.3g 1852 S 76.4  0.9   2222:39 /wls/wls81/bea1036/jrockit-jdk1.6.0_37-R28.2.5-4.1.0/bin/java -Xnoopt -server -Xms2048m -Xmx2048m -Xgc:ge
441393 wls81     20   0 2504m 2.3g 1760 S 69.9  0.9   2181:09 /wls/wls81/bea1036/jrockit-jdk1.6.0_37-R28.2.5-4.1.0/bin/java -Xnoopt -server -Xms2048m -Xmx2048m -Xgc:ge
441425 wls81     20   0 2494m 2.3g 1760 S 50.6  0.9   2280:43 /wls/wls81/bea1036/jrockit-jdk1.6.0_37-R28.2.5-4.1.0/bin/java -Xnoopt -server -Xms2048m -Xmx2048m -Xgc:ge

但我的程序写出来有点问题...只能抓取到某一行而不是整块的信息。
请问大家该如何实现我的功能

import re
import subprocess
import sys

F=open(sys.argv[1])
value=0
L=[]
for i in subprocess.Popen('grep -w top -A 15 %s' %sys.argv[1],shell=True,stdout=subprocess.PIPE).stdout.readlines():
         if re.findall(r'\d+\%us',i):
              if int(re.findall(r'\d+',re.findall(r'\d+\.\d+%us',i)[0])[0]) > 23:
                        print i

这样写我只能抓到以下信息,而不是一整块的!

Cpu(s): 26.2%us, 13.1%sy,  3.1%ni, 56.1%id,  0.0%wa,  0.0%hi,  1.6%si,  0.0%st

Um....我自己写出来了! 不过大家看看有没有其他更好的方法!

#!/usr/bin/env python

import re
import subprocess
import sys

F=open(sys.argv[1])
value=0
L=[]
for i in subprocess.Popen('grep -w top -A 15 %s' %sys.argv[1],shell=True,stdout=subprocess.PIPE).stdout.readlines():
        if re.findall(r'\d+\%us',i):
                if int(re.findall(r'\d+',re.findall(r'\d+\.\d+%us',i)[0])[0]) >= 75:
                        print subprocess.Popen('grep %s -A 15 -B 5 %s' %(i.split()[1],sys.argv[1]),shell=True,stdout=subprocess.PIPE).stdout.read()

恩...还是有点小问题!
这个程序读取处理的数据不是顺序排放的!
比如我文本的数据时1,2,3,4
读取出来的时候是1,4,3,2 是个乱序的! 这个怎么解决?


import re

def getProcesses(usage=80.0, filename='performance.txt'):
    with open(filename) as f:
        lines = f.readlines()
        for line in lines:
            m = re.search('^\d+.*\s+(\d+\.\d+)\s+(\d+\.\d+).*\:', line)
            if m:
                cpu_usage = m.group(1)
                if float(cpu_usage) > usage:
                    print "CPU: ", cpu_usage
                    print line

getProcesses()

将序号和处理的文本放到一个元组里面,然后将元组存储到列表中,再按元组中的序号排列。
试试?


import psutil

imoprt 大法好

【热门文章】
【热门文章】