Python3中ConfigArgParse模块的使用

      ConfigArgParse是一个可以替换argparse的插件,可通过"pip install configargparse"直接安装,允许通过配置文件或环境变量设置选项.最新版本为1.5.3,源码地址为:https://github.com/bw2/ConfigArgParse,  License为MIT.
      Python中的命令行解析模块如argparse对配置文件和环境变量的支持非常有限,因此ConfigArgParse模块扩展了argparse来添加这些特性.
      Features:
      (1).command-line, config file, env var,和默认设置现在可以使用单个API一次性定义、记录和解析.如果以多种方式指定值,则: command line > environment variables > config file values > defaults;
      (2).配置文件可以具有.ini或.yaml样式语法(例如:key=value or key: value);
      (3).用户可以通过普通(normal-looking)的命令行参数(例如:-c path/to/config.txt)而不是argparse-style @config.txt提供配置文件;
      (4).可以指定一个或多个默认配置文件路径(例如:['/etc/bla.conf', '~/.my_config']);
      (5).完全支持所有argparse功能;
      (6).env vars and config file keys & syntax会自动记录在-h帮助信息中;
      (7).新方法print_values()可以报告keys & values以及它们的设置位置(例如:command line, env var, config file, or default);
      (8).轻量级(除了(可选)PyYAML之外,没有第三方库依赖项);
      (9).可扩展(ConfigFileParser可以子类化(subclassed)以定义新的配置文件格式).

     示例代码如下所示:

import configargparse # pip install configargparse

def config_file_parse():
    #parser = configargparse.ArgumentParser(default_config_files=["test.conf"])
    parser = configargparse.ArgumentParser() # Aliases: ArgParser
    parser.add_argument("-c", "--config", required=True, is_config_file=True, help="config file path") # Aliases: add, add_arg
    parser.add_argument("--csdn_addr", type=str, default="csdn", help="csdn addr")
    parser.add_argument("--github_addr", type=str, default="github", help="github addr") # Aliases: add, add_arg
    parser.add_argument("--beijing", type=bool, default=False, help="work addr1")
    parser.add_argument("--jinan", type=bool, default=True, help="work addr2")
    parser.add_argument("--tianjin", type=bool, default=True, help="work addr3")
    parser.add_argument("--age", type=int, default=2, help="age")
    parser.add_argument("--height", type=float, default=1.7, help="height")
    parser.add_argument("--package", type=str, help="package pos")

    options = parser.parse_args() # Aliases: parse

    #print("======================================")
    #print(parser.format_help())
    #print("======================================")
    print(parser.format_values())
    #print("======================================")

    print("csdn addr:", options.csdn_addr)
    print("github addr:", options.github_addr)

    if options.beijing:
        print("Your work address: BeiJing")

    if options.age > 18:
        print("You are an adult, age:", options.age)

    if options.height:
        print("Your height:", options.height)

    if options.package == "./test_package":
        print("package pos:", options.package)

if __name__=='__main__':
    config_file_parse()
    print("test finish")

      test.conf内容如下:

csdn_addr = https://blog.csdn.net/fengbingchun
github_addr = https://github.com/fengbingchun

beijing = True
tianjin = False

age = 28
height = 1.65

package = ./test_package

      执行结果如下所示:

      GitHub: https://github.com/fengbingchun/Python_Test

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ConfigArgParse是Python的一个命令行参数解析模块,它支持从多个来源(命令行参数、配置文件、环境变量等)读取参数,并且提供了一些额外的功能,如默认值、类型转换、互斥参数等。 它的使用方式类似于Python自带的argparse模块,但是提供了更加灵活的参数读取方式。同时,ConfigArgParse也支持将参数值保存到配置文件,方便下次使用时直接读取。 以下是一个使用ConfigArgParse模块的例子: ```python import configargparse parser = configargparse.ArgumentParser() parser.add_argument('--input', type=str, help='input file path') parser.add_argument('--output', type=str, help='output file path') parser.add_argument('--num_iters', type=int, default=10, help='number of iterations') parser.add_argument('--batch_size', type=int, default=32, help='batch size') args = parser.parse_args() print(args.input) print(args.output) print(args.num_iters) print(args.batch_size) ``` 在上述例子,我们使用configargparse.ArgumentParser()创建了一个解析器对象,并通过add_argument()方法添加了四个参数。其,--input和--output是必选参数,--num_iters和--batch_size是可选参数,如果不指定则会使用默认值。 通过parser.parse_args()方法解析命令行参数,可以从命令行读取参数值来覆盖默认值。例如,运行以下命令: ```bash python example.py --input data.txt --num_iters 20 ``` 则会输出: ``` data.txt None 20 32 ``` 其,--input参数的值被设为了"data.txt",--num_iters参数的值被设为了20,而--output参数没有指定,因此其值为None。 除了从命令行读取参数外,ConfigArgParse还支持从配置文件、环境变量、文件等多个来源读取参数。例如,可以在当前目录下创建一个config.ini文件,写入以下内容: ```ini [input] path = data.txt [output] path = result.txt [num_iters] value = 30 [batch_size] value = 64 ``` 然后,在命令行使用以下命令运行脚本: ```bash python example.py --config-file config.ini ``` 则会从配置文件读取参数值,并覆盖默认值。例如,在上述例子,--input参数的默认值被覆盖为了"data.txt",而--num_iters参数的默认值被覆盖为了30。 ConfigArgParse还支持其他一些高级功能,如互斥参数、子命令等,可以根据实际需求进行使用

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值