将参数解析为字典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}