zoukankan      html  css  js  c++  java
  • python 正则读取指定内容

    #!/usr/bin/python
    # -*- coding: gbk -*-
    
    #@PyName : 
    #@author : whx
    #date : 2012-1-8
    #描述 :
    
    #version : 1.0
    
    #-------------------------------------------------------------------------------
    
    import MySQLdb
    import re
    import ConfigParser
    import os
    import MyLog
    
    
    
    Def_Mark = "请尽快处理(您可以点击这里参考告警类型说明及处理建议)。 本邮件为系统推送,请不要直接回复。如有任何问题,请联系我们"
    Def_DateCompile = re.compile('告警发生时间:(.+)')
    Def_IPCompile = re.compile('告警内容:(.+) cpu')
    Def_ValueCompile = re.compile('使用率持续高负载 当前值:(\d+)')
    
    ##文件名
    #Def_FileName = r"D:\Documents and Settings\Administrator\桌面\11\4.txt"
    
    
    #log初始化
    Log = MyLog.Log()
    
    g_cursor = None
    g_conn = None
    
    
    #----------------- 读配置---------------
    configInfo = ConfigParser.RawConfigParser()
    fobj = open("dbConfig.ini")
    configInfo.readfp(fobj)
    
    Def_DBIp = configInfo.get('Database', 'dbIp')
    Def_DBName = configInfo.get('Database', 'database')
    Def_TableName = configInfo.get('Database', 'tableName')
    Def_DBPort = int(configInfo.get('Database', 'port'))
    Def_DBUser = configInfo.get('Database', 'user')
    Def_DBPwd = configInfo.get('Database', 'pwd')
    Def_FileName = configInfo.get('Database', 'filePath')
    
    fobj.close()
    #----------------------------------------
    
        
    ## 连接数据库
    # @parma None None
    ## return None
    def ConMysql():
        global g_cursor
        global g_conn
        
        try:
            g_conn = MySQLdb.connect(host = Def_DBIp, port = Def_DBPort, db = Def_DBName, 
                                     user = Def_DBUser, passwd = Def_DBPwd)
            
        except MySQLdb._mysql.OperationalError, e:
            raise MySQLdb._mysql.OperationalError, str(e) + '\nConnect MySQL error'
        
        g_cursor = g_conn.cursor()
        
        return
    
    
    ## 提交信息
    # @parma None None
    ## return None
    def Commit():
        try:
            g_conn.commit()
        except Exception, e:
            raise e + '\nCommit SQL error'
        
        return
        
    
    ## 执行sql语句
    # @parma None None
    ## return None
    def Execute(SQL):
        '''
        `查询语句 (开头是select\Select\SELECT)返回结果列表( 空 返回() )
        `执行语句 返回影响条数
        '''
        try:
            g_cursor.nextset()
            count = g_cursor.execute(SQL)
        except Exception, e:
            raise str(e) + '\nExecute SQL error:' + SQL
    
        if re.match('[select|Select|SELECT|show]', SQL):
            return g_cursor.fetchall()
        
        else:
            Commit()
            return count
    
    
    ## 关闭数据库
    # @parma None None
    ## return None
    def CloseDB():
        g_cursor.close()
        g_conn.close()
        return 
        
    
    ## 获取文件信息
    # @parma None None
    ## return 每封邮件信息
    def GetFileInfo():
        try:
            tagFile = open(Def_FileName, 'r')
            info = tagFile.read()
            tagFile.close()
        except Exception, e:
            print e
            Log.Error("GetFileInfo: fileName = %s, e=%s"%(Def_FileName, str(e)))
            return None
            
        return info
        
    
    ## 获取每个邮件片段
    # @parma None None
    ## return 每封邮件信息列表
    def GetTagInfoList():
        fileInfo = GetFileInfo()
        if not fileInfo:
            return
        
        tagInfoList = fileInfo.split(Def_Mark)
        
        if len(tagInfoList) <= 0:
            return
    
        return tagInfoList
        
    
    ## 获取需要的信息列表
    # @parma tagInfo 每条记录的信息
    ## return 信息列表
    def GetInfoList(tagInfo):
        dateInfo = Def_DateCompile.findall(tagInfo)
        ip = Def_IPCompile.findall(tagInfo)
        value = Def_ValueCompile.findall(tagInfo)
        
        if len(dateInfo) <= 0 or len(ip) <= 0 or len(value) <= 0:
            Log.Error("GetInfoList: info = %s"%tagInfo)
            return []
        
        return [dateInfo[0], ip[0], value[0]]
        
    
    ## 主函数
    # @parma None None
    ## return None
    def Main():
        print "begin runing......"
        
        tagInfoList = GetTagInfoList()
        
        if len(tagInfoList) <= 0:
            Log.Error("the file is null")
            return
        
        print "connect db...."
        
        #连接数据库
        ConMysql()
        
        print "add data, please wainting...."
        
        #解析每条邮件
        for info in tagInfoList:
            tagList = GetInfoList(info)
    
            if len(tagList) <= 0:
                continue
    
            #添加到数据库
            sqlCmd = "insert into %s (%s,%s,%s) values('%s', '%s', %s)"% \
              (Def_TableName, 'ip_addr', 'alarm_time', 'cpu_top', tagList[0], tagList[1], tagList[2])
    
            #插入新表
            Execute(sqlCmd)
    
            
        CloseDB()
        
        print "OVER....."
        
        return
            
    
    if __name__ == "__main__":
        Main()
    
        
        
        
  • 相关阅读:
    如何用vue实现树形菜单?
    spring+springMVC,声明式事务失效,原因以及解决办法
    java提高同步锁的几点建议
    java自定义before和after
    java线程池
    jdk并发工具包之锁
    ReentrentLock重入锁
    java守护线程
    ReentrantLock
    java多线程基础
  • 原文地址:https://www.cnblogs.com/richard403/p/2922643.html
Copyright © 2011-2022 走看看