将参数解析为字典argparse

我想将参数传递给 python 脚本,如下所示。

python test.py --env_a 5 --env_b 8

这样所有以“env”开头的参数都被添加到字典中,如:

env = {
"a": 5,
"b": 8
}

当然,重点是这些参数的数量和名称不是预定义的。

你知道这是否可行,或者是否有更好的方法来做到这一点?

我正在使用 argparse 所以类似的东西

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--env-*", type=dict, default=0)
args = parser.parse_args()

print(args.env)

将是理想的。

回答

除了手动执行之外,我看不到其他方法:

import argparse

parser = argparse.ArgumentParser()
args, unknown = parser.parse_known_args()

# unknown == ['--env_a', '5', '--env_b', '8']

env = {}
for i in range(0, len(unknown), 2):
    if not unknown[i].startswith('--env'): continue
    assert unknown[i+1].isdigit()
    env[unknown[i][len('--env_'):]] = int(unknown[i+1])

# env == {'a': 5, 'b': 8}


以上是将参数解析为字典argparse的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>