将互斥选项的值存储在 Python argparse 中的相同参数中
Store values of mutually exclusive options in same argument in Python argparse
我有一个 Python 脚本,可以在三个不同的环境中部署一些软件,我们称它们为 development
、testing
和 production
。为了 select 脚本应该在哪个环境下工作,我想使用互斥标志,如下所示:
./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_const'
,而不是使用 action='store_true'
,为每个参数和 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')
不用 3 个参数,您可以只使用一个 choices:
parser = argparse.ArgumentParser(description="Manage deployment")
parser.add_argument("environment", choices=['development', 'testing', 'production'])
args = parser.parse_args()
print(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')
我有一个 Python 脚本,可以在三个不同的环境中部署一些软件,我们称它们为 development
、testing
和 production
。为了 select 脚本应该在哪个环境下工作,我想使用互斥标志,如下所示:
./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_const'
,而不是使用 action='store_true'
,为每个参数和 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')
不用 3 个参数,您可以只使用一个 choices:
parser = argparse.ArgumentParser(description="Manage deployment")
parser.add_argument("environment", choices=['development', 'testing', 'production'])
args = parser.parse_args()
print(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')