根据txt文件中的搜索结果分配变量值



我是一个新手程序员(如果那样的话!(我正在做一个简单的项目,该项目将吞下HP网络交换机配置文件,并吐出交换机的png图像,带有与端口相关的vlan颜色匹配的彩色端口

目前,我有一个良好的手动工作方式。

我导入了一个空白的switch png文件则我指定用于接口1&2.然后我指定要分配给它们的vlan的颜色。我运行一个命令,上面写着"如果图像中的任何像素与x,x,x颜色匹配,那么将它们更改为trunkport的值"然后吐出带有颜色变化的新图像文件

这里有一个例子:

import cv2
import numpy as np
SwitchImage = cv2.imread("BlankSwitchXX.png",1)
interface1 = [0,0,1]
interface2 = [0,0,2]
trunkport = [0,165,255]
SwitchImage[np.where((SwitchImage == interface1).all(axis = 2))] = trunkport
SwitchImage[np.where((SwitchImage == interface2).all(axis = 2))] = trunkport
cv2.imwrite("SwitchXX.png",SwitchImage) 

这很好,但是最终目标是使用switch配置文件来进行分配。

这些cfg文件充满了无用的文本,但有一行我对感兴趣

它们看起来像这个

trunk 1,2 Trk1 LACP

我想问一下,是否有办法在这个.txt文件中搜索字符串"trunk",然后如果它在trunk上找到了,看看后面的数字。它会看到

1,2

并将其解释为与相同

interface1
interface2

然后将"trunkport"的值分配给这些变量。

我希望这有道理,如果没有,请告诉我。这背后的想法是,大量交换机将共享相同格式的配置,并且该程序可以用于仅使用cfg文件直观地映射vlan颜色。

任何帮助都将不胜感激!!

您可以使用re模块来匹配您感兴趣的行。如果你的数据在一个名为data.txt的文件中,你可以得到它,比如:

import re
with open('test.txt', 'r') as f:
lines = f.readlines()
p = re.compile('^trunk')
matches = [l for l in lines if p.match(l)]
#output: ['trunk 1,2 Trk1 LACPn']

现在您有一个以"trunk"开头的行列表。看见https://docs.python.org/3/library/re.html#module-re了解如何在Python中执行regex的详细信息。

现在,如果数字紧跟在"trunk"后面,你可以得到这些数字,如下所示:

numbers = [m.split(' ')[1].split(',') for m in matches]
#output: [['1', '2']]

(正如Idlehands所建议的,这也可以使用正则表达式来完成(。

最后,您可以将这些数字添加到dict中以访问它们

{'interface' + x:'trunkport' for interfaces in numbers for x in interfaces}
#output: {'interface1': 'trunkport', 'interface2': 'trunkport'}

相关内容

  • 没有找到相关文章

最新更新