前言

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

  • 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获取value Parameters
----------
config: ConfigParser(), 配置实例对象
section: str, 配置文件中的区域
key: str, 配置的参数名
"""
# 优先从环境变量中获取配置参数, 没有的话再从配置文件中获取
value = os_env.get(key, "")
if not value:
try:
value = config.get(section, key)
except (NoOptionError, NoSectionError):
# 没有的话就返回None
value = None
return value if __name__ == '__main__':
config = read_config("test.ini")
print(get_config(config, "mysql", "host"))

[python]从环境变量和配置文件中获取配置参数的更多相关文章

  1. 将python文件加入到python的环境变量中

    在python中,把一个python文件加入到python环境变量中,以方便其他python文件调用.有两种方式,下面对其进行简单的介绍 方式一: 导入系统自带的sys模块,然后将文件的路径进行追加或 ...

  2. TP v5中环境变量在项目中的应用

    环境变量,顾名思义就是在不同的系统环境,同一个变量的值可以有所不同. 如开发环境.测试环境与正式环境下,数据库配置.静态资源文件Url前缀.缓存.各种key等配置都不相同,对于提交到仓库中的代码,理论 ...

  3. Spring使用环境变量控制配置文件加载

    项目中需要用到很多配置文件,不同环境的配置文件是不一样的,因此如果只用一个配置文件,势必会造成配置文件混乱,这里提供一种利用环境变量控制配置文件加载的方法,如下: 一.配置环境变量 如果是window ...

  4. Spring使用环境变量控制配置文件加载(转)

    项目中需要用到很多配置文件,不同环境的配置文件是不一样的,因此如果只用一个配置文件,势必会造成配置文件混乱,这里提供一种利用环境变量控制配置文件加载的方法,如下: 一.配置环境变量 如果是window ...

  5. python 读取环境变量

    python 读取环境变量 前言 在使用python时候千万不要把账户密令直接写入脚本,特别是当你计划开源自己的作品时. 为了保护账户信息,你需要让脚本从环境中导入敏感信息. 读取方法 import ...

  6. python3使用ConfigParser从配置文件中获取列表

    使用python3使用ConfigParser从配置文件中获取列表 testConfig.py #!/usr/bin/env python # coding=utf- __author__ = 'St ...

  7. 类库从自带的配置文件中获取信息(DLL文件 获取 DLL文件自带的配置信息) z

    http://blog.csdn.net/shuaishifu/article/details/19602059 类库调用自身所带的配置文件中的配置信息,而不是读取应用程序所带的配置信息.代码如下: ...

  8. MySQL 配置文件中忘配置default-character-set引发的乱码问题

    今天,一开发同事使用jdbc连接数据库执行一条语句无结果集,但是通过sqlyou执行相同的语句有返回结果. 执行的语句where条件中含有中文,这应该是字符集引起的 此开发测试实例刚迁移不久的,查看迁 ...

  9. hadoop搭建杂记:Linux下JDK环境变量的设置(三种配置环境变量的方法)

    Linux下JDK环境变量的设置(三种配置环境变量的方法) Linux下JDK环境变量的设置(三种配置环境变量的方法) ①修改/etc/profile文件 如果你的计算机仅仅作为开发使用时推荐使用这种 ...

  10. WePY根据环境变量来改变运行时的参数

    WePY根据环境变量来改变运行时的参数 · Tencent/wepy Wiki https://github.com/Tencent/wepy/wiki/WePY%E6%A0%B9%E6%8D%AE% ...

随机推荐

  1. 百度飞桨(PaddlePaddle)- 张量(Tensor)

    飞桨 使用张量(Tensor) 来表示神经网络中传递的数据,Tensor 可以理解为多维数组,类似于 Numpy 数组(ndarray) 的概念.与 Numpy 数组相比,Tensor 除了支持运行在 ...

  2. Django-Virtualenv虚拟环境安装、新建,激活和手动指定Python解释器、虚拟环境安装Django、创建Django项目、运行Django项目

    一.安装虚拟环境: 命令:pip3 install virtualenv 二.安装管理工具: 命令:pip3 install virtualenvwrapper 三.新建: 命令:python -m ...

  3. Strings must be encoded before hashing

    Strings must be encoded before hashing 当我们将字符串传递给 hash 算法时,会出现 "TypeError: Strings must be enco ...

  4. Django的ModelAdmin自带

    需要自定义数据表中哪些字段可以显示,哪些字段可以编辑,并对数据表中的条目进行排序,同时定义过滤选项.Django的ModelAdmin自带的list_display, list_filter, lis ...

  5. 2023.5.16 总结 AT_abc260_g

    atcoder AT_abc260_g 题意 一个点 O 可以影响到其它点,能影响到的点的坐标满足:(\((u, v)\) 为当前点的坐标,\((x, y) 为能影响到的点的坐标\)) \(u\le ...

  6. 避坑版-OpenSSH 用户名枚举漏洞(CVE-2018-15473)

    介绍: OpenSSH 7.7前存在一个用户名枚举漏洞,通过该漏洞,攻击者可以判断某个用户名是否存在于目标主机中,在复现过程中遇到了很多坑,这里我就把遇到坑和解决方法告诉大家!!! 漏洞环境: 靶机: ...

  7. springboot 项目国际化+登录拦截器

    项目页面国际化 1.语言配置文件 需要下载插件Resource Bundle Editor 新建国际目录i18n 在properties配置文件中自定义 2.前端index页面要设置语言参数传递给后端 ...

  8. python利用subprocess执行shell命令

    subprocess以及常用的封装函数 运行python的时候,我们都是在创建并运行一个进程.像Linux进程那样,一个进程可以fork一个子进程,并让这个子进程exec另外一个程序.在Python中 ...

  9. K8S | 核心原理分析

    目录 一.背景 二.持续集成 三.K8S架构 1.核心组件 2.分层结构 3.核心能力 3.1 发现与负载 3.2 调度 3.3 自动伸缩 四.应用案例 1.服务部署 2.交互流程 五.参考源码 整体 ...

  10. AWSBackup:备份您的云计算资源及数据

    目录 <AWS Backup:备份您的云计算资源及数据> 背景介绍 随着云计算技术的不断普及,越来越多的企业开始将云计算资源视为其关键业务数据的潜在来源.同时,随着数据价值的不断增加,备份 ...