文件读取的方式:
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)