【发布时间】:2013-09-13 12:46:11
【问题描述】:
我知道以前有人问过类似的问题,但我真的找不到确切的问题(另外,我无法理解“nargs”或“subparse”的概念以及它如何适用于我的案例)
我想要类似的东西:
parser = argparse.ArgumentParser()
parser.add_argument('-mode', choices=['download', 'upload'], required=True)
parser.add_argument('-d', required=True)
args = parser.parse_args()
if args.mode == 'download':
parser.add_argument('-f', required=True)
args = parser.parse_args()
所以只有当-mode 是download 时才需要-f 参数,否则它不应该被解析
【问题讨论】:
-
argparse没有相互包容的论点,这就是您所说的。相反,您应该既不需要-d也不需要-f,而是在使用消息中包含必须指定两者或都不指定的事实,然后检查以确保同时指定-d和-f(如果有)是。 -
你可以使用subparsers,这样
download就变成了一个带有它自己的一组(必需的)标志的子命令。
标签: python command-line-arguments argparse