global
не сохраняется между двумя exec
вызовами.Это будет работать:
exec("global bar\nbar=3\n")
Но динамическая установка переменных - сильный запах кода.Каждый раз, когда вы обнаруживаете, что делаете что-то похожее на это, вы должны немедленно остановиться и переоценить, если есть другой способ сделать это.В этом случае я предлагаю использовать словарь вместо:
import re
data = {}
def test ( var ):
op="""
1/1/1/1 up up :99005 53476 99005 g993-2-17a
1/1/1/2 up up :99005 53148 99005 g993-2-17a
1/1/1/3 up up :99005 53793 99005 g993-2-17a
"""
op=op.splitlines()
for line in op:
pattern = "([0-9]+/[0-9]+/[0-9]+/[0-9]+) *?([a-z]+) *?([a-z]+) :([0-9]+) +?([0-9]+) +?([0-9]+) +?([a-z0-9-]+)"
if re.search(pattern, line):
match=re.search(pattern, line)
var1=re.sub(r'/', '_', match.group(1))
x = var+"_"+ var1
print(x)
data[x] = {
"whole": match.group(0),
"if_index": match.group(1),
"adm_state": match.group(2),
"opr_state": match.group(3),
"tx_rate_us": match.group(5),
"tx_rate_ds": match.group(6),
"op_mode": match.group(7),
}
print(data["info_1_1_1_1"]['if_index'])
test("info")
print(data["info_1_1_1_1"])