我有一个 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(使用前将#替换为@)