Python 关于时间处理之时间相减

遇到一些需求,将某个文件中的时间进行相加减的操作,这里用到的是 from dateutil.parser import parse,可以将字符串形式的时间,进行相加减,如下:

import sys
import re
from dateutil.parser import parse
import pandas as pd

#cmp=com.transsion.camera/com.android.camera.CameraLauncher 行开始时间
#previewStarted START 行结束时间
#a = parse('2019-10-30 23:43:10.123')

#fileName = r'D:\log\log.txt'

class time_treatment():

    def __init__(self):
        self.gapTime()

    def parameterRE(self, pattern, line):
        rule = re.compile(pattern)
        result = rule.search(line)
        if result:
            return result.groups()
        else:
            return None

    def gapTime(self):
        file = sys.argv[1]
        df_file = []

        with open(file,'rb') as read_line:
            for line in read_line:
                df_file.append(str(line))
                #df_file.append(line.rstrip()) #去掉换行
        dict = {}
        gapTime = []
        time = []
        tag = []
        start_time = None
        end_time = None
        for line in df_file:
            start = 'cmp=com.transsion.camera/com.android.camera.CameraLauncher'
            end = 'previewStarted START'
            if start in line:
                tag.append(start)
                re = self.parameterRE(r'(\d+-\d+ \d+:\d+:\d+\.\d+).*', line)
                time.append(re[0])
                start_time=parse(re[0])
                gapTime.append('')
            elif end in line:
                tag.append(end)
                re = self.parameterRE(r'(\d+-\d+ \d+:\d+:\d+\.\d+).*', line)
                time.append(re[0])
                end_time = parse(re[0])
            if start_time:
                if end_time:
                    gap = str(end_time-start_time)
                    gapTime.append(gap)
            for i in gapTime:
                if i.find(',') >0:
                    gapTime.remove(i)
        dict = {'Time':time, 'Tag':tag, 'GapTime':gapTime}
        self.df_time = pd.DataFrame.from_dict(dict)
        #print(self.df_time)
        self.df_time.to_excel('./gapTime.xlsx')

        if self.df_time:
            print('-------------Done-------------')
        else:
            print('-------------不存在要解析的信息-------------')


if __name__ == "__main__":
    df = time_treatment()

重点是用parse将字符串格式转换为时间格式,然后做加减处理。

其中关于结束点的时间减去开始的时间,算法还是有点问题的,会多出来一个计算,暂时留着这个bug

猜你喜欢

转载自blog.csdn.net/weixin_37830912/article/details/106660352