【发布时间】:2015-11-02 21:15:42
【问题描述】:
我正在使用一个应用程序,它接收像“:”分隔的字符串作为节点 ID 和可能包含几个特殊字符的流名称等参数。当我想解析参数时,由于某些特殊字符(如 *.这是一个示例输入:
python flowapp.py --remove 00:00:02:84:75:e2:95:42 UDP*node-3_to_node-4*dp9000__@node-1
这是我用来解析选项“--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'
有没有办法告诉 python 的 argparser 将 -、* 或 @ 等字符解释为特殊字符而不是“数学”运算符?
【问题讨论】:
标签: python-2.7 parsing arguments argparse