Я работаю с приложением, которое получает параметры как «:» разделенные строки как идентификатор узла и имя потока, которое может содержать несколько специальных символов. Когда я хочу проанализировать аргументы, возникает ошибка из-за некоторых проблем со специальными символами типа *. Это пример ввод:Как разбирать специальные символы в аргументе ArgumentParser()?
python flowapp.py --remove 00:00:02:84:75:e2:95:42 UDP*node-3_to_node-4*[email protected]
Вот код, я использую для разбора варианта «--remove»:
parser.add_argument("-r","--remove",help="remove the specified flow\
entry from a given node",nargs='2')
Когда я исполняю приложение я получаю следующие ошибки:
...
start_index = consume_optional(start_index)
File "/usr/lib/python2.7/argparse.py", line 1858, in consume_optional
arg_count = match_argument(action, selected_patterns)
File "/usr/lib/python2.7/argparse.py", line 2011, in _match_argument
nargs_pattern = self._get_nargs_pattern(action)
File "/usr/lib/python2.7/argparse.py", line 2176, in _get_nargs_pattern
nargs_pattern = '(-*%s-*)' % '-*'.join('A' * nargs)
TypeError: can't multiply sequence by non-int of type 'str'
Есть ли способ описать argparser python для интерпретации символов как -, * или @ как специальные символы, а не «математические» операторы?