[英]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.