Argparse:来自文件的默认值

2024-04-04

我有一个 Python 脚本,它需要很多参数。 我目前使用的是configuration.ini文件(使用读取configparser),但希望允许用户使用命令行覆盖特定参数。 如果我只有两个参数,我会使用类似的东西:

if not arg1:
    arg1 = config[section]['arg1']

但我不想为 30 个参数这样做。 任何从命令行获取可选参数的简单方法,默认为config file?


尝试以下操作,使用字典.update() https://docs.python.org/3/library/stdtypes.html#dict.update:

import argparse
import configparser

config = configparser.ConfigParser()
config.read('config.ini')
defaults = config['default']

parser = argparse.ArgumentParser()
parser.add_argument('-a', dest='arg1')
parser.add_argument('-b', dest='arg2')
parser.add_argument('-c', dest='arg3')
args = vars(parser.parse_args())

result = dict(defaults)
result.update({k: v for k, v in args.items() if v is not None})  # Update if v is not None

以这个 ini 文件为例:

[default]
arg1=val1
arg2=val2
arg3=val3

and

python myargparser.py -a "test"

result将包含:

{'arg1': 'test', 'arg2': 'val2', 'arg3': 'val3'}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Argparse:来自文件的默认值 的相关文章

随机推荐