我正在编写一个脚本来控制Docker映像的构建。目前,我支持Centos的一个或多个基本映像和一个或多个Debian。我希望"--centos“或"--debian”默认为最新版本。但是,如果用户想要构建一个旧的副本,那么这应该来自一个选择列表。因此,我正在寻找一个混合的:parser.add_argument(‘-centos’,选择=‘centos-6’,'centos-7')和parser.add_argument(‘-centos’)
所以我可以像这样运行脚本:
python dobuild.py --centos #would build the latest centos in the list
或
python dobuild.py --centos centos-6 #would build the older copy
但
python dobuild.py --centos centos-5 #would return an 'invalid choice' error
我试过choices=['centos-6','centos-7','']和choices=['centos-6','centos-7', []]
完整性:python dobuild.py --centos --debian #would build the latest centos AND latest debian in the list等。。。
发布于 2020-04-25 03:33:48
若要在默认情况下添加此可选参数,可以使用nargs='?'和const='<default>'。在这里的医生
注意,对于可选参数,还有一个额外的情况--选项字符串存在,但后面没有命令行参数。在这种情况下,将产生const的值:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--centos', choices=['centos-6', 'centos-7'], nargs='?', const='centos-7')使用此解析器:
>>> parser.parse_args([])
Namespace(centos=None)
>>> parser.parse_args(['--centos'])
Namespace(centos='centos-7')
>>> parser.parse_args(['--centos', 'centos-6'])
Namespace(centos='centos-6')https://stackoverflow.com/questions/61420553
复制相似问题