文件读取的方式:
这里写图片描述
Python对文件的读写主要是通过open()所构建的文件对象来实现,也就是先要调用open方法,创建文件对象

#!/usr/local/bin/python
# -*- coding:utf-8 -*-
'获取错误日志,并写入到新文件中'
import re
def get_errorlog(sourcedir,errordir):
    f =open(sourcedir,'r',encoding='utf-8')
    errorf= open(errordir,'w',encoding='utf-8')
    #以行进行读取
    text=f.readlines()
   # print(text)
    for line in text:#遍历
        if '.java' in line:#判断改行是否包含.java
            if 'INFO'not in line:#判断该行是否存在info
                errorf.write(line)#往目标文件写入
        elif 'ERROR' in line:
            errorf.write(line)
        elif 'Exception' in line:
            #print(text)
            errorf.write(line)
    #关流
    f.close()
    errorf.close()
#####################################################################
def withOpen(sourcedir,errordir):
    with open(errordir,'w') as errorfile2:
        with open(sourcedir,'r') as f2:
            text2=f2.readlines()
            # print(text2)
            for line in text2:  # 遍历
                if '.java' in line:  # 判断改行是否包含.java
                    if 'INFO' not in line:  # 判断该行是否存在info
                        errorfile2.write(line)  # 往目标文件写入
                elif 'ERROR' in line:
                    errorfile2.write(line)
                elif 'Exception' in line:
                    # print(text)
                    errorfile2.write(line)
######################################################################
#####正则不太会
def withOpen2(sourcedir,errordir):
    with open(errordir,'w') as errorfile3:
        with open(sourcedir,'r') as f3:
            text3=f3.readlines()
            for line in text3:
                if re.search(r'\.java',line) and 'INFO' not in line:
                    errorfile3.write(line)
                elif re.search(r'.ERROR',line):
                    errorfile3.write(line)
                elif re.search(r'.Exception',line):
                    errorfile3.write(line)
if __name__ == '__main__':
  sourcedir = "E:/tempFile/text.log"  # 需要读取的源文件路径
  errordir = "E:/tempFile/error_log.txt"  # 存放错误日志的目标文件
  #get_errorlog(sourcedir,errordir)#以open方式进行读取
  #withOpen(sourcedir,errordir)#以openwith方式读取文件
  withOpen2(sourcedir, errordir)

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐