Я пытаюсь создать синтаксический анализатор, где он выглядит как "scriptName -s arg1 arg2 ... -d ...".Поэтому я пытаюсь добавить все данные после -s в список (и, наконец, в словарь) и вернуть его.
Следующая функция, которую я использую:
def split_data(cli_args):
dict_args = {}
local_list = []
for i in range(1,len(cli_args)):
if(cli_args[i] == '-s'):
try:
i = i + 1
while(cli_args[i] != '-d'):
print("while",(cli_args[i]))
local_list.append(cli_args[i])
i = i + 1
print("local_list",local_list)
dict_args.update({"options" : local_list})
except BaseException as err:
print(str(err))
break
print(dict_args)
return dict_args
Результат дает:
while arg1
local_list ['arg1']
while arg2
local_list ['arg1', 'arg2']
list index out of range
{}
Но если вам нужно было обернуть цикл while
(полный цикл) в try: except:pass
, то в конечном словаре сохраняются данные, почему?
while arg1
local_list ['arg1']
while arg2
local_list ['arg1', 'arg2']
list index out of range
{"options" : ['arg1', 'arg2']}