繁体   English   中英

Python-读取文件并显示数据块

[英]Python - Read file and display block of data

我正在尝试读取文件(以下示例)。 我需要显示2组不同的数据

  1. 第一个数据不是连续的(即不连续-分布在文本文件中)

我需要显示的行应该有我在搜索字符串中寻找的字符串

def basic():
    searchstrings = ['Device name:', 'Switch type is', 'Kernel uptime is' , 'NXOS: version' ] 
    for line in fh:
        for word in searchstrings:
            if word in line:
                print line

我上面的代码的问题是显示多行,如下所示:

NXOS:版本5.2
设备名称:N11k
内核正常运行时间为55天,23小时,53分钟,11秒
NXOS:版本5.2
装置名称:N11k
内核正常运行时间为55天,23小时,53分钟,12秒
开关类型为:Nexus1100(8插槽)机箱

我猜我的for循环逻辑不正确-需要帮助修复它。 也可以将行保存在变量中以供以后打印吗?

  1. 第二个数据是连续的(连续的块),我想从“显示模块”中读取,直到“显示许可证”上方的行,我尝试过在这里列出的建议-python-从文件的特定行读取文本,但无法使其工作-我根本没有输出

谢谢,维克多

正在读取的文件:

软件
BIOS:版本06.20
NXOS:版本5.2
BIOS编译时间:11/07/2013
NXOS映像文件为:bootflash:///n1000-dk9.5.2.bin
NXOS编译时间:2014年6月3日13:00:00 [2014年6月18日23:35:53]

硬件
cisco Nexus1000 C1508(8插槽)机箱(“管理程序模块”)
具有16402460 kB内存的Intel®Xeon®CPU E5-2403。
处理器板ID SAL

设备名称:N1k-LabSystem
引导闪存:21 kB
内核正常运行时间为55天,23小时,53分钟,11秒

上次重置
原因:未知
系统版本:5.2
服务:

开关类型为:Nexus1100(8插槽)机箱

show module
Mod端口模块类型型号状态


2 52 48x1 / 10G SFP + 4x40G以太网模块N11K-X9564PX ok
3 36 36p 40G以太网模块N11k-X9636PQ ok
21 0光纤模块N11k-FM正常
22 0光纤模块N11k-FM正常
23 0光纤模块N11k-FM正常
24 0光纤模块N11k-FM正常
25 0光纤模块N11k-FM正常
26 0光纤模块N11k-FM正常
27 0主管模块N11k-SUP-A处于活动状态*
29 0系统控制器N11k-SC-A有效
30 0系统控制器N11k-SC-A待机

Mod Sw Hw插槽


2 5.2 1.0 LC2
3 5.2 1.0 LC3
21 5.2 1.1 FM1
22 5.2 1.1 FM2

“演出许可证”
XYZABNCD

问题出在您的basic功能之外。 我试过了,行没有重复。 它可能仅来自于您所说的方式。 如果您想让它们以后打印,应该写:

def basic(fh):resul = [] searchstrings = ['设备名称:','开关类型为','内核正常运行时间','NXOS:版本'] for fh中的行:for searchstring中的单词:if word in行:resul.append(line.strip())中断返回resul

那样 :

  • 即使该行包含多个搜索到的单词,也只会采取一次
  • 您传递fh作为参数,而不是使用全局
  • 您返回匹配行的列表

要在show moduleshow license之间建立界线,可以使用:

def between(fh, first, last)
    ok = False
    for line in fh:
        if last in line: break
        if ok: print line.rstrip()
        if first in line: ok=True

between('show module', 'show license')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM