我是python和编程的初学者,我想在python中创建一个脚本,可以判断消息是否已发送。阅读日志文件之后我注意到每条消息都有一个 mid 所以我有了一个想法,但我不确定...如果我将所有mid保存在列表或字典中我将是能够将它与具有mid + \ s +“确定”或“错误”的行进行比较,这里是我的日志文件的一部分( mid的每次增加1。) 有人可以帮助我开始吗?因为我不知道如何开始这个...提前谢谢
01:09:25.258 mta Messages I Doc O:NVS:SMTP/a.b@x.de R:NVS:SMS.0/+01542xx **mid:6261**
01:09:41.965 mta Messages I Rep O:NVS:SMTP/a.b@x.de R:NVS:SMS.0/+01542xx **mid:6261**
01:09:41.965 mta Messages I Rep **6261** OK, Accepted (ID: 26)
答案 0 :(得分:0)
我建议如下:
我们假设日志文件不是太大而不适合内存。
import re
with open("myfile.log") as infile:
data = infile.read()
首先,找到文件中的所有邮件ID:
messages = set(m.group(1) for m in re.finditer(r"\*\*mid:(\d+)\*\*", data))
现在,找到存在OK
行
successes = set(m.group(1) for m in re.finditer(r"\*\*(\d+)\*\*\s*OK", data))
两者之间的差异是没有OK
消息的ID集:
failures = messages - successes
答案 1 :(得分:0)
这样的东西?
import re
pat = r'\*\*(\d+)\*\* (OK|Error)'
text = open('emailex.txt').read()
d = {}
for res in re.finditer(pat, text):
d[res.group(1)] = res.group(2)
errors = [mid for mid,status in d.items() if status == 'Error']