嗨我想配置幾個只接受特定長參數的子分析器的argparse。下面是密碼使用Python Argparse與幾個子分析器
import argparse
parser = argparse.ArgumentParser(prog='program', description='Prog Description')
subparsers = parser.add_subparsers(help='choices')
parser.add_argument('--choice', '-c', choices=['a', 'apple', 'b', 'banana', 'l', 'lemmon', 'p', 'papaya'], type=str, help='Menu Choices', required=True)
a_parser = subparsers.add_parser("a")
b_parser = subparsers.add_parser("b")
l_parser = subparsers.add_parser("l")
p_parser = subparsers.add_parser("p")
a_parser.add_argument("--peel")
b_parser.add_argument("--peel")
l_parser.add_argument("--lamount")
p_parser.add_argument("--pamount",required=True,type=str)
但我在以下幾點失敗。
- 子分析器應接受短格式和長格式。恩。
prog -c a
和prog -c apple
都是合法的和相同的 除了
--pamount
以外不需要subparsers的聲明。但代碼似乎預計他們,因爲我在運行有效模式時遇到錯誤python prog -c a
用法:program [-h] --choice {a,apple,b,banana,l,lemmon,p,papaya} {A,p,b,L} ... 程序:錯誤:參數太少
我很高興,如果有人能提供給我一些指導方針,以解決這些問題。謝謝!
感謝您的回答,這對確定方法非常有幫助。然而,這個錯誤仍然存在,因爲剛纔我檢查了'aliases'是Python 2.7中的新增功能,並且我正在使用Python 2.6並且必須在該版本中使用它。另外,當我添加'dest ='choice''我不能在參數中添加簡寫形式'c'。 –
你應該可以從任何2.7 python中竊取'argparse.py'文件並放入你自己的目錄。 – hpaulj
是的,我打算做一個類似的事情,因爲當前的argparse模塊版本是1.2.1,我將它升級到1.4.1。這應該可以解決問題。 :) –