Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将互斥选项的值存储在Python argparse中的同一参数中_Python_Python 3.x_Argparse - Fatal编程技术网

将互斥选项的值存储在Python argparse中的同一参数中

将互斥选项的值存储在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

我有一个Python脚本,可以在三种不同的环境中部署一些软件,我们称它们为
开发
测试
生产
。为了选择脚本应使用的环境,我希望使用互斥标志,如下所示:

./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')

谢谢,但实际上我不能,因为我有其他位置参数,这就是为什么我说我想使用标志。我认为这可能是一个问题,尽管不一定?为什么要有其他的职位呢?无论如何,在这种情况下,您自己的解决方案似乎非常适合:)谢谢,但实际上我不能,因为我有其他位置参数,这就是为什么我说我想使用标志。我认为这可能是一个问题,尽管不一定?为什么要有其他的职位呢?无论如何,在这种情况下,您自己的解决方案似乎非常适合:)