import ArgumentParser
parser = ArgumentParser(description="Tool to keep archiving tar files")
parser.add_argument("-a", "--action", dest="action", choices=("start", "stop", "list"), help="start/stop/list the directories to be monitored", default="list", required=True)
parser.add_argument("-t", "--type", dest="type", choices=("a", "b"), help="Type of spooler job", default=None)
parser.add_argument("-p", "--path", dest="path", help="Absolute path of the directory to be monitored", default=None)
parser.add_argument("-c", "--codeline", dest="codeline", choices=("x","y","z"), default=None, required=True)
parser.add_argument("-r", "--release", dest="release", help="Directory path gets assigned automatically based on the release", default=None)
args = parser.parse_args()
在上面的代碼中,如果動作被指定爲start/stop,則type和path/release中的一個是必需的輸入。有沒有辦法在add_argument方法本身做到這一點?如何在python中對命令行參數進行分組?
附加信息:
如果該操作以「列表」形式給出,則不需要其他選項。例如,「script.py -a列表」應該工作。 只有當動作以開始/停止的形式給出時,其他選項纔是必需的。例如,「script.py -a start」應該拋出錯誤。 「script.py -a啓動-TA -p/tmp目錄-CX」或「script.py -a開始-tb -r RR -cy」應該工作
您可能需要使用subparser:http://docs.python.org/2/library/argparse.html#sub-commands。 – sberry