我正在尝试阅读文件(下面的示例)。 我需要显示2组不同的数据
我需要显示的行应该有我在searchstrings中寻找的字符串
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秒(s) 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 [06/18/2014 23:35:53]硬件
思科Nexus1000 C1508(8槽)机箱(" Supervisor模块")
Intel(R)Xeon(R)CPU E5-2403具有16402460 kB的内存 处理器板ID SAL设备名称:N1k-LabSystem
bootflash:21 kB
内核正常运行时间为55天(s),23小时(s),53分钟(s),11秒(s)上次重置
原因:未知
系统版本:5.2
服务:开关类型为:Nexus1100(8插槽)机箱
show module
Mod Ports模块类型模型状态
2 52 48x1 / 10G SFP + 4x40G以太网模块N11K-X9564PX ok
3 36 36p 40G以太网模块N11k-X9636PQ ok
21 0结构模块N11k-FM ok
22 0结构模块N11k-FM ok
23 0结构模块N11k-FM ok
24 0结构模块N11k-FM ok
25 0结构模块N11k-FM ok
26 0结构模块N11k-FM ok
27 0监控模块N11k-SUP-A有效*
29 0系统控制器N11k-SC-A有效
30 0系统控制器N11k-SC-A备用Mod Sw Hw Slot
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
答案 0 :(得分:0)
问题超出了您的basic
功能。我试了一下,线条没有重复。它可能只来自你的称呼方式。如果你想让它们以后再打印,你应该写:
def basic(fh): 结果= [] searchstrings = ['设备名称:','切换类型为','内核正常运行时间为' ,' NXOS:版本' ] 对于fh中的行: for searchstrings中的单词: 如果排成一行: resul.append(line.strip()) 打破 返回结果
那样:
要获得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')