一文解析 Python 读取配置文件的常用方法!

news2024/11/23 23:15:58

在程序运行使用当中,尤其是框架设计中,配置文件是必不可少的,配置文件的存在能够放置参数或者选项设置,使得程序更加灵活可用,下面就来介绍 Python 读取配置文件的常用方法。

常用的配置文件种类有很多,甚至你可以用txt来作为配置文件,放置参数,这里简单介绍一下ini、yaml、env配置文件的读取常用方法,仅供参考。

ini 配置文件

ini 配置文件适合放置公共环境中,尤其适合放置配置参数,注意section的名称不可以重复,注释用分号开头。

  1. ini 文件格式

配置文件的格式如下:

中括号“[ ]”内包含的为section。

section 下面为类似于key-value 的配置内容,一般是用赋值符“=”分隔。

;注意section的名称不可以重复,注释用分号开头。
[root] ; section名称
name = PythonSEO
pass = SEO

[database] ; section名称
host = localhost
port = 3306
user = root
password = 123456
  1. ini 配置文件读取方法

ini 配置文件读取使用 Python 自带的configparser库来读取ini文件。

b9193607946568eb2c7e9c660a924db7.png

# -*- coding: UTF-8 -*-
#@author:huguo00289
from configparser import ConfigParser

conf = ConfigParser()
conf.read("root.ini")

name = conf.get("root", "name")
passw = conf.get("root", "passw")
password=conf.getint("database", "password")
print(name, type(name))
print(passw, type(passw))
print(password, type(password))

print(conf.sections())    # 输出:['root', 'database']
print(conf['database']['host'])    # 输出:localhost
print(conf['database']['port'])    # 输出:3306
print(conf['database']['user'])    # 输出:root
print(conf['database']['password'])    # 输出:123456

yaml 配置文件

  1. yaml 文件格式 AML(YAML Ain't Markup Language)是一种人类可读的数据序列化语言。YAML(YAML Ain't Markup Language)支持多种数据类型,包括字符串、数字、布尔值、列表、字典和空值。

;注意section的名称不可以重复,注释用分号开头。
[root] ; section名称
name = PythonSEO
pass = SEO

[database] ; section名称
host = localhost
port = 3306
user = root
password = 123456
  1. yaml 配置文件读取方法

yaml 配置文件读取使用 Python 自带的yaml库来读取yaml文件。

0f2f3dfdd2a06a6031a649f3b85e48a3.png

# -*- coding: utf-8 -*-
import yaml

#方式一
with open("root.yaml", encoding="utf-8") as yaml_file:
    data = yaml.safe_load(yaml_file)

print(data["root"])
print(data["mysql"])
print(data["root"][0]['name'])
print(data["mysql"][0]['host'])

#方式二
# 使用open()函数读取config.yaml文件
yaml_file = open("root.yaml", "r", encoding="utf-8")
# 读取文件中的内容
file_data = yaml_file.read()
# 加载数据流,返回字典类型数据
config = yaml.load(file_data, Loader=yaml.FullLoader)
print(config)

env 配置文件

  1. env 文件格式

env --- 全局默认配置文件,在所有的环境中被载入,当你指定了环境,它也会合并,并且优先级大于.env,没有指定环境时先找它。

.env.development --- 指定开发环境的配置文件。

.env.production --- 指定生产环境的配置文件,当 build 运行会触发此文件。

# 注释1
KEY1=value1
# 注释2
KEY2=value2

ADMIN_HOST = https://uat-rm-gwaaa.cn
ADMIN_LOGIN_ROUTE = /api/rm/auth/admin/login
ADMIN_LOGIN_DATA = {"phone":"13922221111","password":"6d614954ed51"}
  1. env 配置文件读取方法

在 Python 中,可以使用 第三方库 dotenv 库来读取 .env 文件中的环境变量。该库提供了两个主要的函数:load_dotenv() 和 dotenv_values()。

from dotenv import load_dotenv

#方式一:
# 加载.env文件
load_dotenv()

# 在代码中使用环境变量
import os
key1 = os.environ.get("KEY1")
key2 = os.environ.get("KEY2")

方式二:
from dotenv import load_dotenv, find_dotenv
from pathlib import Path

# 自动搜索.env文件
load_dotenv(verbose=True)
# 等价与上面写法
load_dotenv(find_dotenv(),verbose=True)
# 指定env文件
load_dotenv(find_dotenv(Path.cwd().joinpath('root.env')))

import os

print(os.getenv('ADMIN_HOST'))

·················END·················

你好,我是二大爷,

革命老区外出进城务工人员,

互联网非早期非专业站长,

喜好python,写作,阅读,英语

不入流程序,自媒体,seo . . .

公众号不挣钱,交个网友。

读者交流群已建立,找到我备注 “交流”,即可获得加入我们~

听说点 “在看” 的都变得更好看呐~

关注关注二大爷呗~给你分享python,写作,阅读的内容噢~

扫一扫下方二维码即可关注我噢~

ba1de0bd887704277b72c571dc84cdde.jpeg

0cf256407a57a72c4f94b03a9d81479f.png

关注我的都变秃了

说错了,都变强了!

不信你试试

ffdc3bd652f094bdbe14d429f3c21cc9.jpeg

扫码关注最新动态

公众号ID:eryeji

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

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

相关文章

【Nginx27】Nginx学习:代理模块(一)基本配置与概念

Nginx学习:代理模块(一)基本配置与概念 来了来了它来了。要说 Nginx 最早最出名的名头是什么?相信不少老码农马上就会想到,最开始,Nginx 的名头就是一款性能最高的 反向代理 服务器。现在其实也是&#xff…

Harmony 开始支持 Flutter ,聊聊 Harmony 和 Flutter 之间的因果

相信大家都已经听说过,明年的 Harmony Next 版本将正式剥离 AOSP 支持 ,基于这个话题我已经做过一期问题汇总 ,当时在现有 App 如何兼容 Harmony Next 问题上提到过: 华为内部也主导适配目前的主流跨平台方案,主动提供…

听GPT 讲Istio源代码--pilot(7)

File: istio/pilot/pkg/model/log.go 在Istio项目中,istio/pilot/pkg/model/log.go文件的作用是定义了Istio Pilot的日志记录功能。 该文件中定义了一个名为log的全局日志记录器,并且还定义了一些与日志记录相关的变量,如verbose、verboseCou…

Linux高性能服务器编程 学习笔记 第三章 TCP协议详解

与IP协议相比,TCP协议更靠近应用层,因此在应用程序中有更强的可操作性。一些重要的socket选项都和TCP协议相关。 本章从以下方面讨论TCP协议: 1.TCP头部信息。TCP头部信息出现在每个TCP报文段中,用于指定通信的源端端口号、目的端…

气传导与入耳式传导区别?气传导耳机好用吗?

​入耳式耳机隔音效果好,但佩戴舒适性差,音质更偏向沉浸式。相比传统入耳式耳机,气传导耳机可以提供开放的听觉体验,音质更加自然真实,同时避免了长时间佩戴耳机可能会带来的不适感。以下是我总结了最好用的几款气传导…

使用RTMDet模型训练DOTA_v1.0教程

1. 环境配置 需要注意,如果之前安装过mmrotate,那么这个mmyolo请单独创建一个虚拟环境,因为mmyolo和mmrotate的最新版本不兼容。 1.创建环境 conda create -n mmyolo python3.82.安装依赖 # 进入mmyolo环境中 conda activate mmyolo# 安装…

Oracle两个日期都存在返回最小/最大的,如果只存在一个就返回存在的日期

Oracle函数 Oracle两个字段日期都存在返回最小的,如果只存在一个就返回存在的日期. 函数说明LEAST(value1, value2, …)最小值GREATEST(value1, value2, …)最大值COALESCE(value1, value2, …)返回第一个不是空值的参数

计算机网络与技术——物理层

😊计算机网络与技术——物理层 👻物理层的基本概念👻数据通信基础知识🚢数据通信系统的模型🚢信道的基本概念🚢信道的极限容量 👻物理层下面的传输媒体🔊导引型传输媒体&#x1f50a…

006-第一代光电小工具(二)

第一代光电小工具(二) 文章目录 第一代光电小工具(二)项目介绍串口QCustomPlot 部分开启OpenGl更新曲线 总结一下 关键字: Qt、 Qml、 QCustomPlot、 串口、 QSerialPort 项目介绍 欢迎来到我们的 QML & C 项目!这个项目结合了 QML(…

Ubuntu系统下载及安装教程

史上最全最新Ubuntu安装教程(图文) - 知乎 (说明:本教程介绍的是安装DeskTop版的系统) 1.官网下载镜像 官方网址: https://ubuntu.com/#download进入官网后会有最新版本的镜像下载地址,如果需要下载最新版本,直接点…

2023-09-18 LeetCode每日一题(打家劫舍 III)

2023-09-18每日一题 一、题目编号 337. 打家劫舍 III二、题目链接 点击跳转到题目位置 三、题目描述 小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为 root 。 除了 root 之外,每栋房子有且只有一个“父“房子与之相连。一番侦…

【C++】构造函数初始化列表 ③ ( 构造函数 的 初始化列表 中 为 const 成员变量初始化 )

文章目录 一、构造函数 的 初始化列表 中 为 const 成员变量初始化1、初始化 const 常量成员2、错误代码示例 - 没有初始化常量成员3、正确代码示例 - 在初始化列表中初始化常量成员4、完整代码示例 构造函数初始化列表 总结 : 初始化列表 可以 为 类的 成员变量 提供初始值 ;…

TCP IP网络编程(六) 基于UDP的服务器端、客户端

文章目录 一、理解UDP1.UDP套接字的特点2.UDP内部工作原理3.UDP的高效使用 二、实现基于UDP的服务器端、客户端1.UDP中的服务端和客户端没有连接2.UDP服务器端和客户端均只需要一个套接字3.基于UDP的数据I/O函数4.基于UDP的回声服务器端、客户端5.UDP客户端套接字的地址分配 三…

【Java】java: 无效的标记: -parameters

问题描述 maven項目,原来使用jdk8的版本,现在改成jdk7的版本,结果报错: java: 无效的标记: -parameters 原因分析 解决方法 删掉下图所示的-parameters参数 参考文章 https://www.cnblogs.com/lovezzb/p/10072854.html

英伟达 nvidia 官方code llama在线使用

新一代编程语言模型Code Llama面世:重新定义编程的未来 随着人工智能和机器学习技术的迅速发展,我们现在迎来了一款革命性的大型编程语言模型——Code Llama。该模型是基于Llama 2研发的,为开放模型中的佼佼者,其性能达到了行业领…

零基础学前端(四)1. 重点讲解 CSS:盒子模型、样式选择器

1. 该篇适用于从零基础学习前端的小白 2. 初学者不懂代码得含义也要坚持模仿逐行敲代码,以身体感悟带动头脑去理解新知识 3. 初学者切忌,不要眼花缭乱,不要四处找其它文档,要坚定一个教授者的方式,将其学通透&#xff…

基于GBDT+Tkinter+穷举法按排队时间预测最优路径的智能导航推荐系统——机器学习算法应用(含Python工程源码)+数据集(二)

目录 前言总体设计系统整体结构图系统流程图 运行环境Python环境Pycharm 环境Scikit-learnt 模块实现1. 数据预处理2. 客流预测1)创建并保存模型2)损失函数3)测试集测试4)自定义特征并预测 3. 百度地图API调用1)申请密…

许少辉博士后挂站联谊《乡村振兴战略下传统村落文化旅游设计》河北站——2023学生开学季辉少许

许少辉博士后挂站联谊《乡村振兴战略下传统村落文化旅游设计》河北站——2023学生开学季辉少许

【大规模 MIMO 检测】基于ADMM的大型MU-MIMO无穷大范数检测研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Winform中DataGridView中实现一个单元格增加多个操作按钮

1.表格名称&#xff1a;dgv&#xff1b;操作列名称&#xff1a;ColOperate 2.相关代码如下&#xff1a; private void Load(object sender, EventArgs e){//初始化调用 前提是表格先填充好数据//循环遍历添加每行的控件for (int i 0;i < dgv.Rows.Count; i){MulAutoBtnEdi…