在日志文件中查找字符串和 return 个额外字符

Find string in log files and return extra characters

如何让 Python 遍历目录并在该目录中的每个文件中找到特定的字符串,然后输出找到的内容的摘要?

我想在长文件中搜索以下字符串: FIRMWARE_VERSION = "2.15"

只是,每个文件中的固件版本可以不同。所以我希望日志文件报告它找到的任何版本。

import glob
import os

print("The following list contains the firmware version of each server.\n")

os.chdir( "LOGS\" )
for file in glob.glob('*.log'):
    with open(file) as f:
        contents = f.read()
    if 'FIRMWARE_VERSION = "' in contents:
        print (file + " = ???)

我想我可以使用类似下面的东西来 return 额外的字符,但它不起作用。

file[:+5]

我希望输出看起来像这样:

server1.web.com = FIRMWARE_VERSION = "2.16"
server2.web.com = FIRMWARE_VERSION = "3.01"
server3.web.com = FIRMWARE_VERSION = "1.26"
server4.web.com = FIRMWARE_VERSION = "4.1"
server5.web.com = FIRMWARE_VERSION = "3.50"

关于如何执行此操作有什么建议吗?

您可以使用 regex 来抓取文本 :

import re

for file in glob.glob('*.log'):
    with open(file) as f:
        contents = f.read()
    if 'FIRMWARE_VERSION = "' in contents:
        print (file + '='+ re.search(r'FIRMWARE_VERSION ="([\d.]+)"',contents).group(1))

在这种情况下 re.search 就可以了!根据以下模式搜索文件内容:

r'FIRMWARE_VERSION ="([\d.]+)"'

在两个双引号之间找到一个浮点数!您也可以使用以下匹配两个双引号之间 FIRMWARE_VERSION 之后的任何内容。

r'FIRMWARE_VERSION =(".*")'