我解析一个日志文件,寻找ERROR标记。 如果出现ERROR一词,则将该行追加到以“;”分隔的列表中到csv文件。 它可以工作,但是列表每次被写入时文件中就会写入列表 我要写的只是完整列表
def failedfile(directory):
fcause = []
for f in os.listdir(directory):
if f.endswith(".log"):
filepath = os.path.join(directory,f)
dfr = os.stat(filepath).st_ctime
dfhr = time.strftime('%d/%m/%Y', time.localtime(dfr))
with open (filepath, mode="rt", encoding="utf-8") as faillogfile:
fail = faillogfile.readlines()
with open(failedfilename, mode='a', newline='') as ff:
writer = csv.writer(ff, dialect='excel', delimiter=";")
for lines in fail:
if "ERROR" in lines:
fail2 = ''.join(fail)
accessname = re.findall(r'\w{1,4}\-\d{1,3}', fail2)
fcause.append(lines)
failcause = ';'.join(fcause)
print(failcause)
market = reglisse(accessname[0])
writer.writerow([accessname[0], market, dfhr, failmessage, failcause])
ff.close
faillogfile.close
return (fcause)
预期:
cat failedfilename
ERROR-错误的第一原因; ERROR-错误的第二原因; ERROR-操作失败
实际结果:
cat failedfilename
错误-错误的第一个原因
ERROR-错误的第一原因; ERROR-错误的第二原因
ERROR-错误的第一原因; ERROR-错误的第二原因; ERROR-操作失败