#!/usr/bin/python2.6

import re,datetime

file_name='sim.log'

file=open(file_name,'r')

acnum=[];time_res=[];lnum=0

def trans_time(time):

    t1=datetime.datetime.strptime(time,'%y/%m/%d %H:%M:%S')

    return t1

for (num,line) in enumerate(file):





    if(re.search(r'^(.*)BEGINNING SIM PROCEDURE(.*)$',line)):

        m=re.search(r'^(.*)BEGINNING SIM PROCEDURE(.*)$',line)

        print 'Step %d:'%(lnum), m.group(0);lnum+=1

        acnum.append(trans_time(line[0:17]))

    elif(re.search(r'^(.*)CP_W(.*)$', line)):

        m=re.search(r'^(.*)CP_W(.*)$', line)

        print 'Step %d:'%(lnum), m.group(0);lnum+=1

        acnum.append(trans_time(line[0:17]))

    elif(re.search(r"^(.*)VERIFY_S(.*)$", line)):

        m=re.search(r"^(.*)VERIFY_S(.*)$", line)

        print 'Step %d:'%(lnum), m.group(0);lnum+=1

        acnum.append(trans_time(line[0:17]))

    elif(re.search(r"^(.*)--action commit(.*)$",line)):

        m=re.search(r"^(.*)--action commit(.*)$",line)

        print 'Step %d:'%(lnum), m.group(0);lnum+=1

        acnum.append(trans_time(line[0:17]))

    elif(re.search(r"^(.*)COMPLETED SIM PROCEDURE(.*)$",line)):

        m=re.search(r"^(.*)COMPLETED SIM PROCEDURE(.*)$",line)

        print 'Step %d:'%(lnum), m.group(0);lnum+=1

        acnum.append(trans_time(line[0:17]))

    elif(re.search(r"^(.*)RESUMING SIM PROCEDURE(.*)$",line)):

        m=re.search(r"^(.*)RESUMING SIM PROCEDURE(.*)$",line)

        print 'Step %d:'%(lnum), m.group(0);lnum+=1

        acnum.append(trans_time(line[0:17]))





file.close()

if(re.search(r"^(.*)backout(.*)$",file_name)):

    time_res.append((acnum[2]-acnum[0]).seconds/60)

    time_res.append((acnum[4]-acnum[3]).seconds/60)

    time_res.append((acnum[6]-acnum[5]).seconds/60)

    time_res.append(((acnum[8]-acnum[7])+(acnum[10]-acnum[9])+(acnum[13]-acnum[11])).seconds/60)

    print "\n3). sim --proc update --action apply to \"CP_WARNING\" %s mins" %(time_res[0])

    print "4). sim --proc update --action resume to  \"VERIFY_SOFTWARE\" %s mins"%(time_res[1])

    print "5). sim --proc update --action resume to  \"COMMIT\" %s mins"%(time_res[2])

    print "8). Backout from RXX to RXX  %s mins"%(time_res[3])

elif(re.search(r"^(.*)rollback(.*)$",file_name)):

    time_res.append((acnum[2]-acnum[0]).seconds/60)

    time_res.append((acnum[4]-acnum[3]).seconds/60)

    time_res.append((acnum[6]-acnum[5]).seconds/60)

    time_res.append((acnum[8]-acnum[7]).seconds/60)

    time_res.append(((acnum[10]-acnum[9])+(acnum[12]-acnum[11])+(acnum[15]-acnum[13])).seconds/60)

    print "\n3). sim --proc update --action apply to \"CP_WARNING\" %s mins" %(time_res[0])

    print "4). sim --proc update --action resume to  \"VERIFY_SOFTWARE\" %s mins"%(time_res[1])

    print "5). sim --proc update --action resume to  \"COMMIT\" %s mins"%(time_res[2])

    print "6). sim --proc update --action commit to end of Patch %s mins"%(time_res[3])

    print "8). Rollback from RXX to RXX %s mins" %(time_res[4])

if __name__ == '__main__':

    pass

compute the su procedure time with python的更多相关文章

  1. Python Django开始

    1.创建工程 C:\procedure\projects>django-admin startproject mysite 2.同步数据库 C:\procedure\projects\mysit ...

  2. Conclusions about Deep Learning with Python

     Conclusions about Deep Learning with Python  Last night, I start to learn the python for deep learn ...

  3. python 面试题1

    1.大数据的文件读取 ① 利用生成器generator ②迭代器进行迭代遍历:for line in file 2.迭代器和生成器的区别 1)迭代器是一个更抽象的概念,任何对象,如果它的类有next方 ...

  4. 整理的最全 python常见面试题(基本必考)

    整理的最全 python常见面试题(基本必考) python 2018-05-17 作者 大蛇王 1.大数据的文件读取 ① 利用生成器generator ②迭代器进行迭代遍历:for line in ...

  5. python 面试题--你能做出多少?

    python3中__get__,getattr,__getattribute__的区别 什么是 GIL 详细博客 GIL = Global Intercept Lock 全局解释器锁,任意时刻在解释器 ...

  6. python常见面试题(mark)

    1.大数据的文件读取 ① 利用生成器generator ②迭代器进行迭代遍历:for line in file 2.迭代器和生成器的区别 1)迭代器是一个更抽象的概念,任何对象,如果它的类有next方 ...

  7. 运行python时提示:ImportError: No module named plyvel ,ImportError No module named irc 解决过程:

    (当前python版本:2.7) 1.在git下载electrum-server: cd / git clone https://github.com/spesmilo/electrum-server ...

  8. 整理的最全 python常见面试题

      整理的最全 python常见面试题(基本必考)① ②③④⑤⑥⑦⑧⑨⑩ 1.大数据的文件读取: ① 利用生成器generator: ②迭代器进行迭代遍历:for line in file; 2.迭代 ...

  9. python基础===通过菲波那契数列,理解函数

    def fib(n): # write Fibonacci series up to n """Print a Fibonacci series up to n.&quo ...

随机推荐

  1. idea中git分支的使用

    转载自 https://blog.csdn.net/qq_34745957/article/details/80288065 工作中多人使用版本控制软件协作开发,常见的应用场景归纳如下: 假设小组中有 ...

  2. Linux System Programming 学习笔记(二) 文件I/O

    1.每个Linux进程都有一个最大打开文件数,默认情况下,最大值是1024 文件描述符不仅可以引用普通文件,也可以引用套接字socket,目录,管道(everything is a file) 默认情 ...

  3. Bzoj2038 小Z的袜子(hose)

    Time Limit: 20000MS   Memory Limit: 265216KB   64bit IO Format: %lld & %llu Description 作为一个生活散漫 ...

  4. 40深入理解C指针之---指针与单链表

    一.指针与单链表 1.定义:通过使用指针将节点(结点)链接起来成为链表 2.节点(结点): 1).数据域:主要用来存储数据,可以基本数据类型,也可以是构造数据类型: 2).指针域:主要用来当前节点(结 ...

  5. js 克隆数据 (数组的深浅拷贝)

    var a1 = [1,2,3]; var a2 = a1; a2[0] = 90; console.log(a1[0]) //90 解析:数组是复合的数据类型,直接复制的话,只是复制了指向底层数据结 ...

  6. ASP.NET Core 依赖注入基本用法

    ASP.NET Core 依赖注入 ASP.NET Core从框架层对依赖注入提供支持.也就是说,如果你不了解依赖注入,将很难适应 ASP.NET Core的开发模式.本文将介绍依赖注入的基本概念,并 ...

  7. JAVA中获取不重复的随机数

    我们知道 Random random = new  Random() 中可能会获取到重复的随机数 那么假设要获取1到33之间的六个不重复随机数应该怎么做呢? 首先定义一个数字数组存储1到33 int[ ...

  8. Ext 中combo的用法

    var combobox_xianqu = Ext.getCmp('combobox_id'); var store_xianqu = Ext.data.StoreMgr.lookup('store_ ...

  9. javascript 对象初探 (三)--- 传递/比较对象

    传递对象 当我们拷贝某个对象或者将对象传递给某个函数时,往往传递的都是该对象的引用.因此我们在该对象的引用上做任何改动,实际上都会影响到引用的原对象. var she = {num:1}; var h ...

  10. SQL-基础学习1--SELECT,LIMIT,DISTINCT,注释

    所使用的数据库资料在:数据库资料 1.1 基础概念 1.数据库(database) 保存有组织的数据的容器(通常是一个文件或一组文件) 注意:常用的mysql,等是数据库管理系统DBMS:由这些软件创 ...