当前位置: 首页 > web >正文

python从环境变量和配置文件中获取配置参数

前言

从环境变量和配置文件中获取配置参数,相关库:

  • python-dotenv:第三方库,需要使用pip安装
  • configparser:标准库

代码

  • test.ini
[mysql]
host = "192.168.0.10"
port = 3306
user = "root"
password = "123456"
[postgresql]
host = "192.168.0.11"
port = 5432
user = "postgres"
password = "123456"
  • demo.py
from configparser import ConfigParser, NoSectionError, NoOptionError
from dotenv import load_dotenv
import os
# 如果存在环境变量的文件,则加载配置到环境变量
if os.path.exists("settings.env"):load_dotenv("settings.env")
os_env = os.environ
def read_config(filename: str) -> ConfigParser:"""从文件中读取配置信息Parameters----------filename : str, 配置文件 """# 实例化对象config = ConfigParser()if not os.path.exists(filename):raise FileNotFoundError(f"配置文件 {filename} 不存在")config.read(filename, encoding="utf-8")return config
def get_config(config: ConfigParser, section: str, key: str):"""根据指定section和key获取valueParameters----------config:  ConfigParser(), 配置实例对象section: str, 配置文件中的区域key:     str, 配置的参数名"""# 优先从环境变量中获取配置参数, 没有的话再从配置文件中获取value = os_env.get(key, "")if not value:try:value = config.get(section, key)except (NoOptionError, NoSectionError):# 没有的话就返回Nonevalue = Nonereturn value
if __name__ == '__main__':config = read_config("test.ini")print(get_config(config, "mysql", "host"))
http://www.xdnf.cn/news/14035.html

相关文章:

  • C#连接SQLServer数据库异常分析处理
  • 磁盘配额管理
  • django restframework 在serializer里 通过context设置session
  • HashMap vs LinkedHashMap
  • SpringMVC 常用注解及页面跳转方式(面试)
  • vue前端项目打包和部署
  • Vue3 + TypeScript 操作第三方库(Element Plus 的 ElTable)的内部属性
  • SQL Server 修改数据库名及物理数据文件名
  • 性能测试——搭建Prometheus+Grafana平台
  • linux学习慕课版 第一章 Linux 文件与目录学习笔记
  • Nginx 配置 HTTPS 与证书格式全解析:支持后端代理验证
  • 基于云计算的振动弦分析:谐波可视化与波动方程参数理解-AI云计算数值分析和代码验证
  • 计算机视觉之三维重建(深入浅出SfM与SLAM核心算法)—— 3. 单视几何
  • 从入门到精通:C# 中 AutoMapper 的深度解析与实战应用
  • 嵌入式PADS中元件封装绘制与实现
  • MySQL 8.0 OCP 英文题库解析(十八)
  • 使用 C/C++ 和 OpenCV DNN 进行人体姿态估计
  • 洛谷 蜜蜂路线 高精度
  • 图片去水印,图片变清晰,完成免费
  • Webpack:现代前端构建工具的核心解析
  • npm安装electron报错权限不足
  • 枫清科技携手中化信息挖掘实现AI高价值场景应用,打通智能化“最后一公里”
  • 音视频的前端知识
  • Google Chrome 书签导出
  • ffmpeg覆盖区域
  • AWS WebRTC:通过shell实现多进程启动master
  • ubuntu 拒绝ssh连接,连不上ssh,无法远程登录: Connection failed.
  • eBay自养号测评系统搭建需要解决哪些问题?
  • 一个模板元编程示例
  • 前端三剑客基础案例001