我使用這個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 ='+''參數已經被需要。 –