Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 在日志文件中查找字符串并返回额外字符_Loops_Python 3.x_Filesystems - Fatal编程技术网

Loops 在日志文件中查找字符串并返回额外字符

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

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

我想在长文件中搜索以下字符串: 固件版本=“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"

关于如何做到这一点,您有什么建议吗?

您可以使用
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!