我需要像下面这样解析命令行
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 let来实现一种奇怪的行为。
所有的参数都被放在“水果”列表中。
谢谢
发布于 2018-12-23 01:05:28
Python3.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')https://stackoverflow.com/questions/53896556
复制相似问题