将互斥选项的值存储在Python argparse中的同一参数中
我有一个Python脚本,可以在三种不同的环境中部署一些软件,我们称它们为将互斥选项的值存储在Python argparse中的同一参数中,python,python-3.x,argparse,Python,Python 3.x,Argparse,我有一个Python脚本,可以在三种不同的环境中部署一些软件,我们称它们为开发,测试和生产。为了选择脚本应使用的环境,我希望使用互斥标志,如下所示: ./deploy.py --development ./deploy.py --testing ./deploy.py --production 到目前为止,我有: parser = argparse.ArgumentParser(description="Manage deployment") group = parser
开发
,测试
和生产
。为了选择脚本应使用的环境,我希望使用互斥标志,如下所示:
./deploy.py --development
./deploy.py --testing
./deploy.py --production
到目前为止,我有:
parser = argparse.ArgumentParser(description="Manage deployment")
group = parser.add_mutually_exclusive_group()
group.add_argument("-d", "--development", action='store_true', required=False)
group.add_argument("-t", "--testing", action='store_true', required=False)
group.add_argument("-p", "--production", action='store_true', required=False)
args = parser.parse_args()
问题是,我希望将环境放在一个变量中,这样我就可以轻松地检查它,而不必手动检查args.development
、args.testing
和args.production
有没有一种方法可以让三个参数写入一个公共变量,这样我就可以执行类似于
args.environment
?的操作而不是使用action='store\u true'
,您可以使用action='store\u const'
,为每个参数和add_argument
的dest
选项分配一个单独的const
值,以便互斥组中的所有参数在parse_args
返回的对象中具有相同的目标
parser = argparse.ArgumentParser(description="Manage deployment")
group = parser.add_mutually_exclusive_group()
group.add_argument("-d", "--development", action='store_const', dest='environment', const='development', required=False)
group.add_argument("-t", "--testing", action='store_const', dest='environment', const='testing', required=False)
group.add_argument("-p", "--production", action='store_const', dest='environment', const='production', required=False)
args = parser.parse_args()
print(args)
输出为:
$ ./test_args.py --production
Namespace(environment='production')
您可以使用
action='store\u-true'
,而不是使用action='store\u-const'
,为每个参数和add\u-argument
的dest
选项指定一个单独的const
值,这样,互斥组中的所有参数在parse_args
返回的对象中都具有相同的目标
parser = argparse.ArgumentParser(description="Manage deployment")
group = parser.add_mutually_exclusive_group()
group.add_argument("-d", "--development", action='store_const', dest='environment', const='development', required=False)
group.add_argument("-t", "--testing", action='store_const', dest='environment', const='testing', required=False)
group.add_argument("-p", "--production", action='store_const', dest='environment', const='production', required=False)
args = parser.parse_args()
print(args)
输出为:
$ ./test_args.py --production
Namespace(environment='production')
您可以将一个参数与以下参数一起使用,而不是3个参数:
parser=argparse.ArgumentParser(description=“Manage deployment”)
add_参数(“环境”,选项=['development','testing','production']))
args=parser.parse_args()
打印(args)
示例:
>>> test_args.py
usage: concept.py [-h] {development,testing,production}
test_args.py: error: the following arguments are required: environment
>>> test_args.py testing
Namespace(environment='testing')
您可以将一个参数与以下参数一起使用,而不是3个参数:
parser=argparse.ArgumentParser(description=“Manage deployment”)
add_参数(“环境”,选项=['development','testing','production']))
args=parser.parse_args()
打印(args)
示例:
>>> test_args.py
usage: concept.py [-h] {development,testing,production}
test_args.py: error: the following arguments are required: environment
>>> test_args.py testing
Namespace(environment='testing')
谢谢,但实际上我不能,因为我有其他位置参数,这就是为什么我说我想使用标志。我认为这可能是一个问题,尽管不一定?为什么要有其他的职位呢?无论如何,在这种情况下,您自己的解决方案似乎非常适合:)谢谢,但实际上我不能,因为我有其他位置参数,这就是为什么我说我想使用标志。我认为这可能是一个问题,尽管不一定?为什么要有其他的职位呢?无论如何,在这种情况下,您自己的解决方案似乎非常适合:)