在日志文件中查找字符串并返回多余的字符

时间:2015-03-12 14:00:53

标签: loops python-3.x filesystems

如何让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 + " = ???)

我以为我可以使用类似下面的内容来返回额外的字符,但它不起作用。

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"

关于我如何做到这一点的任何建议?

1 个答案:

答案 0 :(得分:1)

您可以使用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 =(".*")'