为了账号安全,请及时绑定邮箱和手机立即绑定

如果正则表达式匹配,则向消息添加文件路径

如果正则表达式匹配,则向消息添加文件路径

侃侃无极 2021-12-21 17:30:15
我有以下 Python 脚本(摘录如下),它读取 E:\Data\Production 目录下的所有日志文件并查找某些正则表达式匹配项。errors, tr, warnings = [], [], []rootdir = 'E:\\Data\\Production'for folder, dirs, files in os.walk(rootdir):    for file in files:        if file.endswith('.log'):            fullpath = os.path.join(folder, file)            with open(fullpath, 'r') as f:                for line in f:                    for match in re.finditer(r'.*' + daysdate + '(?!.*[->OK].*).*[Ee]rror.*', line):                        errors.append(match.group(0))                    for match in re.finditer(r'.*' + daysdate + '.*(?!.*deployed)(?!.*complete.*)(?!.*There are no.*)(?!.*disabled.*).*TR\d{4}.*', line):                        warnings.append(match.group(0))                    for match in re.finditer(r'.*' + daysdate + '.*(?!.*deployed)(?!.*[->OK])(?!.*complete.*)(?!.*There are no.*)(?!.*disabled.*).*TR\d{4}.*', line):                        tr.append(match.group(0))if errors == []:    errors.append("No errors found.")[...]sendmail():    "Errors:\n\n%s\n" % "\n".join(map(str, errors)) +    "\Faulty:\n\n%s\n" % "\n".join(map(str, tr)) +    "\Warnings:\n\n%s\n" % "\n".join(map(str, warnings))sendmail()这个的输出是:Errors:No errors found.Faulty:<the entire line containing the matched regex>Warnings:No errors found.我想要做的是添加发现错误的日志文件的完整路径,因此它会改为:Errors:No errors found.Faulty:<the entire line containing the matched regex>Error found in file: E:\Data\Production\qwer\asdf\zxcv.logWarnings:No warnings found.我假设我需要以某种方式附加 fullpath 变量,但我不知道如何实现它。
查看完整描述

1 回答

?
拉丁的传说

TA贡献1789条经验 获得超8个赞

我相信你需要。

for match in re.finditer(r'.*' + daysdate + '.*(?!.*deployed)(?!.*[->OK])(?!.*complete.*)(?!.*There are no.*)(?!.*disabled.*).*TR\d{4}.*', line):
    tr.append(match.group(0) + "\n{0}".format(fullpath))


查看完整回答
反对 回复 2021-12-21
  • 1 回答
  • 0 关注
  • 132 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信