Python常用配置文件读取方法

常见的应用配置方式有环境变量和配置文件,对于微服务应用,还会从配置中心加载配置,比如nacos、etcd等,有的应用还会把部分配置写在数据库中。此处主要记录从环境变量、.env文件、.ini文件、.yaml文件、.toml文件、.json文件读取配置。

ini文件

ini文件格式一般如下:

[mysql]
type = "mysql"
host = "127.0.0.1"
port = 3306
username = "root"
password = "123456"
dbname = "test"[redis]
host = "127.0.0.1"
port = 6379
password = "123456"
db = "5"

使用python标准库中的configparser可以读取ini文件。

import configparser
import osdef read_ini(filename: str = "conf/app.ini"):"""Read configuration from ini file.:param filename: filename of the ini file"""config = configparser.ConfigParser()if not os.path.exists(filename):raise FileNotFoundError(f"File {filename} not found")config.read(filename, encoding="utf-8")return config

config类型为configparser.ConfigParser,可以使用如下方式读取

config = read_ini("conf/app.ini")for section in config.sections():for k,v in config.items(section):print(f"{section}.{k}: {v}")

读取输出示例

mysql.type: "mysql"
mysql.host: "127.0.0.1"
mysql.port: 3306
mysql.username: "root"
mysql.password: "123456"
mysql.dbname: "test"
redis.host: "127.0.0.1"
redis.port: 6379
redis.password: "123456"
redis.db: "5"

yaml文件

yaml文件内容示例如下:

database:mysql:host: "127.0.0.1"port: 3306user: "root"password: "123456"dbname: "test"redis:host: - "192.168.0.10"- "192.168.0.11"port: 6379password: "123456"db: "5"log:directory: "logs"level: "debug"maxsize: 100maxage: 30maxbackups: 30compress: true

读取yaml文件需要安装pyyaml

pip install pyyaml

读取yaml文件的示例代码

import yaml
import osdef read_yaml(filename: str = "conf/app.yaml"):if not os.path.exists(filename):raise FileNotFoundError(f"File {filename} not found")with open(filename, "r", encoding="utf-8") as f:config = yaml.safe_load(f.read())return

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/612073.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GBASE南大通用CreateParameter 方法

创建一个GBASE南大通用Parameter 对象的实例。  语法 [Visual Basic] Public Function CreateParameter As GBaseParameter [C#] public GBaseParameter CreateParameter()  返回值 创建的 GBaseParameter 对象。 执行一个 SQL 语句并返回影响的行数。  语法 […

设计模式——抽象工厂模式(Abstract Factory Pattern)

概述 抽象工厂模式的基本思想是将一些相关的产品组成一个“产品族”,由同一个工厂统一生产。在工厂方法模式中具体工厂负责生产具体的产品,每一个具体工厂对应一种具体产品,工厂方法具有唯一性,一般情况下,一个具体工厂…

数据结构与算法之美学习笔记:46 | 概率统计:如何利用朴素贝叶斯算法过滤垃圾短信?

目录 前言算法解析总结引申 前言 本节课程思维导图: 上一节我们讲到,如何用位图、布隆过滤器,来过滤重复的数据。今天,我们再讲一个跟过滤相关的问题,如何过滤垃圾短信? 垃圾短信和骚扰电话,我…

基于长短期神经网络LSTM的路径追踪

目录 背影 摘要 代码和数据下载:基于长短期神经网络LSTM的路径追踪(代码完整,数据齐全)资源-CSDN文库 https://download.csdn.net/download/abc991835105/88714816 LSTM的基本定义 LSTM实现的步骤 基于长短期神经网络LSTM的路径追踪 结果分析 展望 参考论文 背影 路径坐标…

【MySQL】巧用 DATE_SUB 函数判断时间是否连续

力扣题 1、题目地址 1454. 活跃用户 2、模拟表 表 Accounts: Column NameTypeidintnamevarchar id 是该表主键(具有唯一值的列)该表包含账户 id 和账户的用户名. 表 Logins: Column NameTypeidintlogin_datedate 该表可能…

docker安装nodejs,并更改为淘宝源

拉取官方 Node.js 镜像 docker pull node:latest创建 Dockerfile,并更改 NPM 下载源为淘宝源,设置为全局持久化 # 使用最新版本的Node.js作为基础镜像 FROM node:latest# 设置工作目录为/app WORKDIR /app # 更改 NPM 下载源为淘宝源,并设置…

c++学习笔记-STL案例-机房预约系统1-需求分析

1 机房预约系统需求 1.1 简单介绍 学校有几个规格不同的机房,由于使用经常出现“撞车”现象,现在开发一套预约系统,解决这一问题。 1.2 身份介绍 分别有三种身份使用该系统 学生代表:申请使用机房教师:审核学生的…

从单细胞数据分析的最佳实践看R与Python两个阵营的博弈

R与Python,在生物信息学领域的博弈异常激烈。许多生信分析,两个阵营都发展出了自己的方法,比如单细胞数据分析,R有Seurat,Python就有Scanpy。这些层出不穷的方法不断地吸引着吃瓜群众的眼球,同时也让人患上…

Qt 6之六:Qt Designer介绍

Qt 6之六:Qt Designer介绍 Qt Designer是一个可视化的用户界面设计工具,用于创建Qt应用程序的用户界面,允许开发人员通过拖放和布局来设计和创建GUI界面。 Qt 6之一:简介、安装与简单使用 https://blog.csdn.net/cnds123/articl…

Windows系统Copilot使用方案

在Windows环境中启用和使用Copilot的一般步骤和方案概述: 启用Windows Copilot 确保系统更新: 首先,您的设备需要运行最新的Windows 11版本,因为Copilot可能作为系统更新的一部分推出。 安装与激活: 如果Copilot是通过…

Linux 文件(夹)权限查看

命令 : ls -al ls -al 是一个用于列出指定目录下所有文件和子目录的命令,包括隐藏文件和详细信息。其中,-a 选项表示显示所有文件,包括以 . 开头的隐藏文件,-l 选项表示以列表的形式显示文件的详细信息。 本例中:drwxrwxr-x 为权限细节。 权限细节(Permission detail…

【UML】第18篇 组件图

目录 一、组件图的定义 二、组件图的作用 三、应用场景 四、构成 五、语法 一、组件图的定义 组件图(Component Diagram)是一种UML结构图,它展示了系统中组件、接口以及它们之间的关系。组件是代码的物理模块,如文件、库、可…

Vue3-47-Pinia-修改全局状态变量值的方式

说明 修改全局状态变量的值,是一个比较常规而且常见的操作。 本文就介绍四种常见的操作。 由于Option Store 和Setup Store 在修改的时候略有不同,所以本文也会将不同点体现一下。 全局状态变量的定义 包含了 Option Store 和Setup Store 两种定义方式&a…

设备树常用的其他 OF操作函数

一. 简介 前面几篇学习了设备树常用的 OF操作函数,文章地址如下: 设备树常用 OF 操作函数说明一-CSDN博客 设备树常用 OF 操作函数说明二-CSDN博客 本文继续学习设备树 常用的一些其他的 OF操作函数。 二. 设备树常用的其他 OF操作函数 下面学习设…

DePIN:重塑物理资源网络的未来

点击查看TechubNews更多相关推荐 一、DePIN:物理资源的新整合方式 Depin赛道的项目如雨后春笋般涌现,为市场注入了新的活力。作为先行者,Coinmanlabs已经深入布局Depin赛道,其中最引人注目的项目当属Grass。 什么是DePIN DePIN…

uniapp在web端怎么使用svg图标呢

在图标库中添加好项目用到的图标,点击symbol点击生成在线链接 点击生成的在线链接,此时会跳转到一个新窗口,是一个js文件 复制这个js文件的内容 然后在uniapp中新建svg.js文件,把从上面复制的代码粘贴到这个svg.js中 在main.js中引…

JAVA基础学习笔记-day16-网络编程

JAVA基础学习笔记-day16-网络编程 1. 网络编程概述1.1 软件架构1.2 网络基础 2. 网络通信要素2.1 如何实现网络中的主机互相通信2.2 通信要素一:IP地址和域名2.2.1 IP地址2.2.2 域名 2.3 通信要素二:端口号2.4 通信要素三:网络通信协议 3. 谈…

go 中的 fmt 占位符

通用占位符 %v 值的默认格式表示 fmt.Printf("%v\n", 100)}//100%v 类似%v,但输出结构体时会添加字段名 o : struct{ name string }{"tim"} fmt.Printf("%v\n", o)}} //{name:tim}%#v 值的 Go 语法表示 o : struct{ name stri…

0110qt

完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示"登录成功",提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面 如果账号和密码不匹配&…

RK3568平台 平台总线模型Platform

一.平台总线模型介绍 编写了一个独立的驱动程序,但这样编写出来的驱动程序在重用性和可移植性上是很低的,无论之后要编写一个同类型的驱动还是将该驱动更换一个平台,都要花费时间重新修改驱动代码,而驱动的分离和分层这一软件思路…