• kernel log time 转换为对应的年月日时分秒


    import time
    import datetime
    import sys
    import getopt
    import os
    #需要加入 [  691.165602] android time 2017-06-19 17:47:59.765338  
    #06-19 17:47:59.765338 [  691.165602] android time 2017-06-19 17:47:59.765338 
    a_time = None
    s_second = None
    s_microsecone = None
    abs_time = 0.0
    inputfile = None
    outputfile = None
     
    def usage():
        print('''Help Information:
                 -h, --help:        Show help information
                 -i, --inputfile:   input file  to parse
                 -o, --outputfile:  output fiel parsed
                            ''')
     
     
    def calc_delta(stream):
        global s_second
        global s_microsecond
        global a_time
        global outfile
        begin_index = None
        end_index = None
        delta_second = 0
        delta_mircosecond = 0
        delta_time = 0
        d_time = None
        new_line = None
        if a_time ==None:
            print("Can't convert to android time")
            exit(-1)
        for line in stream:
            if line:
                try:
                    begin_index =  line.index('[')
                    end_index = line[begin_index+1:].index(']')+begin_index+1
                    time_string = line[begin_index + 1 :end_index]
                    [d_second,d_microsecond] = time_string.split('.')
                    delta_second = int(int(d_second) - int(s_second))
                    delta_microsecond = int(int(d_microsecond)-int(s_microsecond))
                    delta_time = datetime.timedelta(seconds=delta_second,microseconds=delta_microsecond)
                    d_time = a_time + delta_time
                    new_line = d_time.strftime("%m-%d %H:%M:%S.%f")+' ' + line
                    outputfile.write(new_line)
                except:
                    outputfile.write(line)
     
     
    def get_atime(stream):
        global s_second
        global s_microsecond
        global a_time
        a_time_op = None
        begin_index = None
        end_index = None
        for line in stream:
            if line:
                a_time_op = line.find('android time')
                if a_time_op>=1:
                    begin_index =  line.index('[')
                    end_index = line[begin_index+1:].index(']')+begin_index+1
                    date_string = line[a_time_op+13:].strip()
                    abs_time = line[begin_index + 1 :end_index]
                    [s_second,s_microsecond] = abs_time.split('.')
                    a_time = datetime.datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S.%f")
                    break
                       
                    
     
    def main(argv):
        global inputfile
        global outputfile
        inputpath = None
        outputpath = None
        try:
            opts, args = getopt.getopt(argv,"hi:o:",["help","inputfile=","outputfile="])
        except getopt.GetoptError:
            usage()
            sys.exit(2)
        for opt, arg in opts:
            if opt in ("-h", "--help"):
                usage()
                sys.exit()
            if opt in ("-i", "--inputfile"):
                inputpath = arg
            if opt in ("-o", "outputfile"):
                outputpath = arg
        if inputpath == None:
            usage()
            sys.exit()
        if outputpath == None:
            outputpath = os.getcwd()+"/out.txt"
     
        inputfile = open(inputpath, 'r')
        outputfile = open(outputpath, 'w')
        get_atime(inputfile)
        inputfile.seek(0)
        calc_delta(inputfile)
        inputfile.close()
        outputfile.close()
    if __name__ == "__main__":
        main(sys.argv[1:])
  • 相关阅读:
    Java基本类型总结
    springboot(八):RabbitMQ详解
    Java开发相关命名规范
    jstl 与 el表达式
    el表达式(一)
    策略模式
    jsp (二) 练习
    jsp (一)
    Servlet (三) 文件下载(只支持英文文件名)
    Servlet (三)HttpServletResponse
  • 原文地址:https://www.cnblogs.com/atlas2016/p/7235095.html
Copyright © 2020-2023  润新知