Loops 在日志文件中查找字符串并返回额外字符
如何让Python循环遍历一个目录,并在该目录中的每个文件中找到一个特定的字符串,然后输出它找到的内容的摘要 我想在长文件中搜索以下字符串: 固件版本=“2.15” 只是,每个文件中的固件版本可能不同。所以我想让日志文件报告它找到的任何版本Loops 在日志文件中查找字符串并返回额外字符,loops,python-3.x,filesystems,Loops,Python 3.x,Filesystems,如何让Python循环遍历一个目录,并在该目录中的每个文件中找到一个特定的字符串,然后输出它找到的内容的摘要 我想在长文件中搜索以下字符串: 固件版本=“2.15” 只是,每个文件中的固件版本可能不同。所以我想让日志文件报告它找到的任何版本 import glob import os print("The following list contains the firmware version of each server.\n") os.chdir( "LOGS\\" ) for file
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"
关于如何做到这一点,您有什么建议吗?您可以使用
regex
作为grub文本:
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\u VERSION
之后的任何内容
r'FIRMWARE_VERSION =(".*")'
您所说的找到的内容摘要是什么意思?它正在搜索日志文件列表,每个日志文件都包含有关固件版本的信息。当找到固件版本时,脚本将固件版本输出到屏幕。它会对每个日志文件执行此操作,这就是我所说的摘要。我得到的错误是:AttributeError:“NoneType”对象没有属性“group”@etho201您确定
固件的格式\u VERSION=“2.15”
正确吗?我指的是方程前的空间,好了,开始工作了!只需要在VERSION和“=”字符之间添加一个空格。谢谢r'FIRMWARE_VERSION=(“*”)正在工作。另一个示例(r'FIRMWARE_VERSION=“([\d\.]+)”)返回了非类型错误。是不是没有将固件识别为双重版本?@etho201可能其中一个版本不是float!