python - 在 argparse 中使用另一个选项值作为默认值

标签 python

是否可以在 argparse 中使用另一个选项值作为默认值

parser.add_argument("--num-1", default='1', help="[OPTIONAL] arg 1")
parser.add_argument("--num-2", default='1', help="[OPTIONAL] arg 2")

这里,如果没有默认值传递给 --num-2 我想使用与 num_1 相同的值,无论是默认值还是输入值。

parser.parse_args("--num-1 10".split())

Namespace(num_1='10', num_2='1') # 即 num_2 应与 num_1 相同

最佳答案

您可以省略 --num-2 的可选值。这意味着如果未给出任何值,则默认值为None。然后,您可以在收到命令行参数后测试是否是这种情况。如果 --num2None,请将其设置为等于 --num-1 的值:

parser.add_argument("--num-1", default='1', help="[OPTIONAL] arg 1")
parser.add_argument("--num-2", help="[OPTIONAL] arg 2")
...
args = parser.parse_args()
if args.num_2 is None:
    args.num_2 = args.num_1

或更简洁地说:

args.num_2 = args.num_1 if args.num_2 is None else args.num_2

更简洁:

args.num_2 = args.num_2 or args.num_1

但请注意,最后一个方法--num-2 不是“假”的情况下才起作用

关于python - 在 argparse 中使用另一个选项值作为默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45804965/

相关文章:

python - 如何根据 pyspark 提供的条件的可变数量进行 F.when

c++ - 异常后执行从哪里恢复?

python - 如何在Python中将.h5文件(Keras)上传到Azure Blob存储而不将其保存在磁盘中

python - 循环字典列表并删除元素

python - 在不构建依赖项的情况下创建轮子

javascript - 如何使用 bokeh 库(Python + JavaScript)管理错误并将其显示在用户界面上?

java - python flask-socketio TypeError : a bytes-like object is required, 不是 'str'

python - 为什么这个 Makefile 每次都要重建?

python - 计算 Django ORM 中按查询分组的注释字段的最大总和?

python - 如何在python中编写代理池服务器(请求来时,选择代理获取url内容)?