在日志文件中查找字符串

2024-05-14 19:40:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我会在日志文件中搜索信息

bkup = "2015-03-27 09:54 *** Backup done.  Errors: 0.  Processed files: 8748.    Backed up files: 8748. Total size: 5.80 GB ***"

我用来获取信息的代码

end = re.findall(r'\d{4}\-\d{2}\-\d{2}\s\d{2}\:\d{2}\s\*\*\*\sBackup\sdone\.\s\sErrors:\s\d{1,5}\.\s\sProcessed\sfiles:\s\d{1,5}\.\sBacked\sup\sfiles:\s\d{1,5}\.\sTotal\ssize:\s\d{1,5}\.\d{1,2}\d{1,2}\s[M|G]B\s\*\*\*', bkup)

当“Total size:”引用为MB或GB,而不是读取“bytes”时,这非常适合

例如

bkup = "2015-03-27 09:54 *** Backup done.  Errors: 0.  Processed files: 8748. Backed up files: 8748. Total size: 0 bytes ***"

有没有办法找到MB或GB或字节。 我还不是Python的专家,所以不要咬我。这是我的第一个问题


Tags: sizebytesmbfilesbackuptotalup我会
3条回答
m = re.compile(r'\d{4}\-\d{2}\-\d{2}\s\d{2}\:\d{2}\s\*\*\*\sBackup\sdone\.\s\sErrors:\s\d{1,5}\.\s\sProcessed\sfiles:\s\d{1,5}\.\sBacked\sup\sfiles:\s\d{1,5}\.\sTotal\ssize:\s\d+(\.\d+)?\s(MB|GB|bytes)\s\*\*\*')
if m.match(bkup):
    # do something
    pass

\d+(.\d+)?匹配5.80或0

(MB | GB |字节)匹配MB或GB或字节

你想要表达的是: (MB|GB|bytes) 它将匹配“MB”、“GB”或“bytes”

import re
re.findall(r"\d+(?:\.\d+)?\s*(?:[GM]B|bytes?)","2015-03-27 09:54 *** Backup done.  Errors: 0.  Processed files: 8748.    Backed up files: 8748. Total size: 5.80 GB *** 5.80 MB 612323 bytes   612323 byte",re.I)

你可以直接用这个。See Demo

相关问题 更多 >

    热门问题