我需要解析如下命令行
script.py apple banana -l list pineapple
水果应显示在列表中,-n标志应显示在另一个标志
我正试图用
解决这个问题parser = argparse.ArgumentParser()
parser.add_argument('fruit', nargs = '*')
parser.add_argument('-l', dest = ls)
使用此示例,我收到以下错误: 无法识别的论点菠萝
注意,使用
script.py apple banana -l list
工作正常
使用nargs = argparse.REMAINDER 做出奇怪的举动。
所有参数都放在“水果”列表中。
谢谢
答案 0 :(得分:1)
Python 3.7添加了parse_intermixed_args
方法
In [70]: parser = argparse37.ArgumentParser()
In [71]: parser.add_argument('fruit', nargs = '*');
...: parser.add_argument('-l', '--ls');
您的错误-fruit
位置被前两个字符串占用/填充。没有位置可以采取最后一个。
In [72]: parser.parse_args('apple banana -l list pinaple'.split())
usage: ipython3 [-h] [-l LS] [fruit [fruit ...]]
ipython3: error: unrecognized arguments: pinaple
...
parse_known_args
在另一个列表中返回这些附加内容,而不是引发错误:
In [73]: parser.parse_known_args('apple banana -l list pinaple'.split())
Out[73]: (Namespace(fruit=['apple', 'banana'], ls='list'), ['pinaple'])
intermixed
可以处理拆分的“位置”:
In [74]: parser.parse_intermixed_args('apple banana -l list pinaple'.split())
Out[74]: Namespace(fruit=['apple', 'banana', 'pinaple'], ls='list')