一、背景介绍
二、方式一:argparse
三、方式二:configParse
四、方式三:dotenv
五、方式四:pydantic
六、小结
背景
对于依赖环境或者对用户开放的变量,我们通常会使用配置文件来管理。
因此对于绝大部分情况而言,我们都需要有一个读取配置文件的操作。
主要目的即将配置文件中的变量值按合适的类型方式存储到内存中。
针对这类场景,这里对几种常见配置文件读取方式进行简单汇总。
鉴于篇幅较长,所以提前进行排序,无关优劣,按个人偏好程度,仅供参考。
偏好程度:pydantic > dotenv > configParse > argparse.
argparse的简单使用
argparse,我们通常使用其作为命令行参数的解析器。
先看个argparse的使用示例:
# -*- coding: utf-8 -*-# !/usr/bin/env pythonimport astimport argparseparser = argparse.ArgumentParser(description='Arg parse module.')parser.add_argument('str_param.', type=str, help='Required parameter')parser.add_argument("--bool_param", type=ast.literal_eval, default=False)parser.add_argument('--int_param', type=int, default=711)parser.add_argument('--bool_param_two', "-b", action="store_true", help="True when exists, or else False")args = parser.parse_args()print(f"int_param: {args.int_param}")params = vars(args)print(params)
首先需要创建解析器的句柄。
然后才能添加各类参数。
参数分两大类,必填参数和可选参数,区别在于添加参数时第一个参数的开头,是否带杠。
第一个参数,代表的是变量名。
不带杠,代表必填。带两杠,代表可选参数。
带一杠,代表起别名,只能单字符,可以单独使用,也可以跟在可选参数之后。
比如示例中的“-b”。
type用于指定类型,help用于辅助性说明,default为初始默认值。
action="store_true"代表的是有则为True,否则为False。
添加完后,需要返回其命名空间。
此时的args,往往就足够了,可以直接通过点属性的方式获取属性值。
对args进行vars转换,只是为了转换成字典,从而打印,观看整体参数赋值效果。
实际使用中看情况使用。
由于argparse自带帮助参数,因此,可以直接通过-h或者--help来获得参数解释。
执行效果如下:
第一条即简单查看其使用说明。
第二条即观察其整体参数字典。
必填参数对应取值紧跟脚本之后,可选参数位置随意。
对于起了别名的参数,使用别名和使用变量名效果一样。
那么,对于argparse的简单使用我们也就基本过了一遍。
argparse读取配置文件
因为argparse可以通过命令行获取到必要的参数。
因此,咱们可以通过命令行来指定配置文件的路径。
当然,只是指定配置文件的路径,我们还不足以解析出配置文件的内容。
所以还需要其他库的配合使用,比如使用json.loads来解析字典型参数配置文件。
给个argparse读取配置文件的示例。
先看配置文件:
{
"dev": {
"param_one": "value_one_dev", "param_two": 711 }, "test