根据txt fi的搜索结果分配变量值

2024-10-16 17:27:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我是个新手程序员(如果是的话!) 我正在工作的一个简单项目中工作,它将吞下一个HP网络交换机配置文件并输出交换机的png图像,其中彩色端口与与这些端口相关联的vlan的颜色相匹配

目前我有一个手动的工作方式很好。在

我导入一个空白的开关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) 

这是很好的工作,但最终目标是使用开关配置文件来进行此分配。在

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

他们看起来像这样

^{pr2}$

我想问一下是否有一种方法可以在这个.txt文件中搜索字符串“trunk”,然后如果它在trunk上找到了,那么看看后面的数字。它看到了

1,2

并将其解释为

interface1
interface2

然后将“trunkport”的值赋给这些变量。在

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

任何帮助都将非常感谢!!在


Tags: 文件端口图像importpng颜色配置文件np
1条回答
网友
1楼 · 发布于 2024-10-16 17:27:15

您可以使用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 LACP\n']

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

现在,如果数字紧跟在“trunk”之后,就可以得到这些数字了:

^{pr2}$

(这也可以通过Idlehands建议的regex实现)。在

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

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

相关问题 更多 >