[英]Reading files and regex with PYTHON
我是python和一般编程的初学者,我想在python中创建一个脚本,该脚本可以判断消息是否已发送。 阅读日志文件后,我注意到每条消息都有一个中点,所以我有了一个主意,但我不确定...如果我将所有中点保存在列表或字典中,则可以将其与行进行比较那个带有mid + \\ s +“ OK ”或“ Error ”这是我的日志文件的一部分(mid每次增加一个。)有人可以帮助我开始吗? 因为我不知道如何开始..在此先感谢
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)
我建议以下内容:
假设日志文件太大,无法容纳在内存中。
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
行的所有消息ID
successes = set(m.group(1) for m in re.finditer(r"\*\*(\d+)\*\*\s*OK", data))
两者之间的区别是没有OK
消息的ID集合:
failures = messages - successes
像这样吗
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']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.