[英]Python - Read file and display block of data
我正在尝试读取文件(以下示例)。 我需要显示2组不同的数据
我需要显示的行应该有我在搜索字符串中寻找的字符串
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循环逻辑不正确-需要帮助修复它。 也可以将行保存在变量中以供以后打印吗?
谢谢,维克多
正在读取的文件:
软件
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
那样 :
要在show module
和show 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.