gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 21:37:26 25 4
gpt4 key购买 nike

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

目前我可以手动方式正常工作。

我导入一个空白开关 png 文件然后我指定接口(interface) 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 文件充满了无用的文本,但有一组我感兴趣的行

它们看起来像这样

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 LACP\n']

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

现在您可以获取紧接在“trunk”之后的数字,如下所示:

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

(这也可以通过 Idlehands 建议的正则表达式来完成)。

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

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

关于python - 根据 txt 文件的搜索结果分配变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53154919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com