Skip to main content
 首页 » 编程设计

python之Argparse:文件中的默认值

2025年05月04日13oomusou

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

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

但我不想对 30 个参数执行此操作。 从 cmd 行获取可选参数并默认为 config 文件的任何简单方法?

请您参考如下方法:

尝试以下操作,使用 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 

和

python myargparser.py -a "test" 

result 将包含:

{'arg1': 'test', 'arg2': 'val2', 'arg3': 'val3'}