我使用这个lib中的python解析参数位置参数:https://docs.python.org/2/library/argparse.html管理多个在与argparse
到目前为止,我有这样的:
prog arg1 [-s arg2 [arg2 ...]] [-m arg3 [arg3 ...]]
而且我想这一点:
prog arg1 -s arg2 [arg2 ...] -m arg3 [arg3 ...]
这是我的蟒蛇码:
parser = argparse.ArgumentParser()
parser.add_argument('path', type=str,
help="path used for the generation of the rouge files")
parser.add_argument('-s', '--systems', type=str, nargs='+',
help="path to the systems generated summary files")
parser.add_argument('-m', '--models', type=str, nargs='+',
help="path to the reference summary files")
args = parser.parse_args()
print args
问题是当您调用没有可选参数的程序时,它不会给出错误(参数太少)。我希望我的可选参数是必须的,但是当你进行下面的调用,解析器不弄清楚哪种args来参与...
对于用下面的代码为例:
parser = argparse.ArgumentParser()
parser.add_argument('arg1', type=str, nargs='+')
parser.add_argument('arg2', type=str, nargs='+')
parser.add_argument('arg3', type=str, nargs='+')
args = parser.parse_args()
而下面的调用:
python test.py arg1 arg1 arg1 arg2 arg2 arg3 arg3
我得到这个:
Namespace(arg1=['arg1', 'arg1', 'arg1', 'arg2', 'arg2'], arg2=['arg3'], arg3=['arg3'])
可以肯定她e是这种前卫的格式:
prog arg1 [arg1 ...] arg2 [arg2 ...] arg3
感谢您的帮助:)
什么是你的问题?这段代码是否工作? –
此代码有效,但参数是可选的。我不知道如何让他们成为一种义务。 – Cadene
你是什么意思的“种强制性”。 'nargs ='+''参数已经被需要。 –