我正在尝试审核一个文件并存储每个部分的结果,以下是文件示例:
-------------- Task 1 -------------- Device Name: hostname_A
Status: Completed
Results: Action completed successfully...
****** Enable Mode Results ******
hostname_A#show run | in abcd
abcd RO 1
hostname_A#show ip access-list 1
Standard IP access list 1
10 permit 1.1.1.1
20 permit 2.2.2.2
30 permit 3.3.3.3
-------------- Task 2 -------------- Device Name: hostname_B
Status: Completed
Results: Action completed successfully...
****** Enable Mode Results ******
hostname_A#show run | in abcd
hostname_A#show ip access-list 1
Standard IP access list 1
10 permit 1.1.1.1
20 permit 2.2.2.2
-------------- Task 3-------------- Device Name: hostname_C
And so on
下面是我迄今为止创建的代码,但仍在努力工作:
^{pr2}$结果如下:
hostname_A, community=Passed, ACL=Passed;
hostname_B, community=Failed, ACL=Failed;
hostname_C, community=Passed, ACL=Failed;
and so on
这里有很多'--Task---'部分,其思想是检查每个“设备名”的结果并将其存储在另一个文件中。我正在努力找到一个更好的工作方式。有什么建议吗?谢谢您!在
我想你想要更像这样的东西:
这是一个供您使用的框架(大量的伪代码)。注释是可以放入特定代码的地方。
^{pr2}$while
循环的作用是不断向taskblock添加行,直到它到达下一个任务行。因为文件对象是迭代器,所以我们可以对其调用next(infile)
来获得下一行并进行迭代。我们需要在try
块内执行while循环,因为如果在文件末尾调用next(f)
,它将引发StopIteration
错误。您还可以执行以下操作:它检查
infile.readline()
是否有效(如果到达行尾,它将返回空),但是如果txt文件中的任何其他行是空的,那么这可能会导致问题。在至于您的
if '2.2.2.2' and '3.3.3.3' in each_line_in_Task_Block:
行,正如它在注释中所说的,它不会返回您期望的结果,您可以使用达到同样的效果。在
我希望你觉得这个有用!在
下面是这个代码的输出文件:
^{pr2}$相关问题 更多 >
编程相关推荐