У меня есть код ниже, он смотрит на файл шаблона jinja, находит в нем все переменные, а затем просит пользователя ввести значение для каждой из них.Идея состоит в том, чтобы иметь возможность повторно использовать этот код для нескольких шаблонов, просто помещая новые файлы «.j2» в папку.Это работает, проблема в том, что, когда он начинает запрашивать у пользователя переменные, переменные находятся не в том же порядке каждый раз, когда они запускаются.Я мог видеть, как пользователь разочаровывается в шаблоне, который он запускает 100 раз в день, когда переменные расположены в случайном порядке.Любые идеи о том, как я могу заставить их выходить в том же порядке каждый раз?Сверху вниз в файле шаблона.
template = input("Template Name: ")
file_loader = FileSystemLoader('.')
env = Environment(loader=file_loader)
template = env.get_template(template)
#finds all variables in a template file
def listvariables(env,template='test.j2'):
source = env.loader.get_source(env, template)
findv = env.parse(source)
uv = meta.find_undeclared_variables(findv)
return uv
uv = listvariables(env)
print("--Begin Entering Variables--")
#Ask user to input data for each variable
variables = {}
for i in uv:
variables[i] = input("Enter %s:" % i)
пример шаблона:
router bgp {{local_asn}}
neighbor {{bgp_neighbor}} remote-as {{remote_asn}}
!
address-family ipv4
neighbor {{bgp_neighbor}} activate
exit-address-family
"uv = meta.find_undeclared_variables (findv)" создает set (), который я знаюнеупорядоченЕсть ли способ обойти это?