gpt4 book ai didi

python 配置模板性能改进

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

我是 python 新手,并且已经创建了我的第一个配置生成脚本。它读取一个 txt 模板,查找我设置的变量,然后根据我拥有的所有位置的 excel csv 创建模板。

它有效,但我只是在寻找最有效的方法来做到这一点,作为我下一个脚本的学习曲线。

import csv
import os
with open('Data/ShowroomData.csv', 'rt') as Data:
SR = csv.DictReader(Data, delimiter=',', quotechar='|')
for row in SR:
# if you were to print just `row`, you would get a dictionary

# set config file path
folder = 'Data/'
filename = row['Host'].strip()
path = folder + '/' + row['Location'].strip()
R1file = path + '/STR-' + filename + '-RTR-01.txt'
# check if path exists if not make path
if not os.path.exists(path):
os.makedirs (path)
# Read in the config file
R1 = None
with open('Data/STR-RTR-01.txt', 'r') as R1Template, open(R1file, 'w') as configfile:
R1 = R1Template.read()

# Replace the target string
R1 = R1.replace('$STR', row['Host'].strip())
R1 = R1.replace('$IP', row['Subnet'])
R1 = R1.replace('$DMVPN-DSL', row['DMVPN-DSL'])
R1 = R1.replace('$DMVPN-4G', row['DMVPN-4G'])
R1 = R1.replace('$BGPASNO', row['BGPAS'])
R1 = R1.replace('$KCIP', row['KCIP'])
R1 = R1.replace('$WRIP', row['WRIP'])
R1 = R1.replace('$LOIP', row['Loopback'])
R1 = R1.replace('$DSL-USER', row['DSL-USER'])
R1 = R1.replace('$DSL-PASS', row['DSL-PASS'])
R1 = R1.replace('$Location', row['Location'].strip())
R1 = R1.replace('$Date', row['InstallDate'])

# check if the BT column is empty
if row['BT'] == (''):
for line in R1.split('\n'):
if '$BTSUB' not in line:
# Write file without BT static routes
configfile.write("{}\n".format(line))
else:
R1 = R1.replace('$BTSUB', row['BT'])
# Write the file
configfile.write(R1)

print('Config templates are now complete!')

最佳答案

您的代码大部分看起来都很好。至于提示,有几个:

  1. 避免使用 + 连接字符串。更喜欢字符串格式例如:'/STR-{}-RTR-01.txt'.format(文件名)这样做的优点是更容易阅读并避免过多的内存分配和复制。由于 Python 中的字符串是不可变的,每次使用 + 都会生成一个新的字符串实例。
  2. 连接路径时使用os.path.join。此方法使事情更加明确,处理分隔符并避免字符串连接。

在脚本的上下文中,上述建议不会真正对执行时间或内存使用产生很大的影响,这些可以帮助大型应用程序。

最后,不要使用“string.replace”来实现您的模板,请查看 Jinja2。 Jinja 2 是一个模板引擎,可以轻松配置它来生成几乎任何类型的基于文本的输出(我已经多次使用它来生成代码)。

关于python 配置模板性能改进,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35989397/

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