ConfigParse简介

ConfigParser 在python中是用来解析配置文件的内置模块,直接导入使用

import configparser

使用该模块可以对配置文件进行增、读、改、删操作。

配置文件的文件类型可以为任意文本类型,比如:ini、txt、csv等。

配置文件中可以包含一个或多个区域(section),每个区域可以有多个参数(键=值)。

配置文件的格式如下:

[db]
db_host = 127.0.0.1
db_port = 3306
db_user = root
db_pass = 123456

[account]
username = admin
password = admin

说明:[ ]为section,用来区分不同的区域,section下面的key-value为配置内容。

ConfigParse使用

初始化对象并读取配置

import configparser

# 创建实例对象
config = configparser.ConfigParser() # 读取配置文件
config.clear() # 读取前清除已读内容。若不清除,多次读取文件会出现非预期内容。
file_path = rf'config/config.ini'
config.read(file_path, encoding="utf-8")

新增/修改配置

使用add_section(section)方法添加section

使用set(section, key, value)方法在指定的section下添加或修改key-value,若key不存在,则添加,若key已存在,则修改

# 新增section
section = "login" # 新增section时,若section在配置文件已存在,则会抛错:already exists
if not config.has_section(section):
# 增加section
config.add_section(section) # 增加key-value
config.set(section, 'username', '1111')
config.set(section, 'password', '2222') # 将配置写入文件
with open(file_path, 'w', encording="utf-8") as configfile:
config.write(configfile)

读取配置

可以用读取字典的两种方法读取指定section中指定key的value

# 读取指定section中指定key的value
# 第一种:使用get方法读取
username = config.get('login', 'username')
password = config.get('login', 'password')
print(username, password)
null_section = config.get('login4', 'username', fallback=u'section 不存在') # 若section或option不存在,fallback返回后备值
null_option = config.get('login', 'NoneKey', fallback=u'key 不存在')
print(null_section, ",", null_option) # 第二种:以[]的方式读取
username = config["login"]["username"]
print(username)

除了能获取指定值,还可以用sections()方法读取所有section,读取结果为list

# 读取配置文件所有section
sections = config.sections()
print(sections)

还可以用options()方法读取所有key,读取结果为list

# 读取对应section下所有key
keys = config.options('login')
print(keys)

删除配置

# 删除指定section下的key,key不存不会抛错,但section不存在则抛错:No section,
config.remove_option('login', 'username') # 删除指定section,section不存在不会抛错
config.remove_section('login') # 将操作同步到文件中
with open(file_path, 'w', encoding="utf-8") as configfile:
config.write(configfile)

其他操作

# has_section()方法判断是否存在指定section,存在返回True,不存在返回False
ret = config.has_section('login')
print(ret) # has_option()方法判断指定section下,是否存在指定key,存在返回True,不存在返回False
ret = config.has_option('login', 'username')
print(ret)

ConfigParse拓展

ConfigParse没有将配置文件读取成dict类型的方法,需要处理转换下

# 暂时没有读取出dict格式的配置文件信息的方法,需要自己处理
# 创建实例对象
config = configparser.ConfigParser() # 读取配置文件
config.clear() # 读取前清除已读内容。若不清除,多次读取文件会出现非预期内容。
file_path = rf'config/config.ini'
config.read(file_path, encoding="utf-8") # 转换配置
login_config = config['account']
login_config_dict = dict(login_config)
print(login_config_dict)

读取结果

ConfigParser_读取配置文件信息的更多相关文章

  1. Asp.net Core 和类库读取配置文件信息

    Asp.net Core 和类库读取配置文件信息 看干货请移步至.net core 读取配置文件公共类 首先开一个脑洞,Asp.net core 被使用这么长时间了,但是关于配置文件(json)的读取 ...

  2. 在java中读取配置文件信息

    public class PropertyUtil { public static final Properties PROP = new Properties(); /** * 读取配置文件的内容( ...

  3. spring配置:context:property-placeholder 读取配置文件信息 在配置文件中使用el表达式填充值

    spring将properties文件读取后在配置文件中直接将对象的配置信息填充到bean中的变量里. 原本使用PropertyPlaceholderConfigurer类进行文件信息配置.Prope ...

  4. spring boot 读取配置文件信息

    1.读取application.properties @Component @ConfigurationProperties(prefix="images.product.column&qu ...

  5. SpringBoot | 读取配置文件信息

    server.port=8081 #修改端口号 server.servlet.context-path= /SpringBoot #修改URL #自定义配置 tz.name = xiaoming tz ...

  6. java读取配置文件信息

    ResourceBundle resource = ResourceBundle.getBundle("shopxx");//不要加.properties后缀,我加了报错 reso ...

  7. .NET Core2.1获取自定义配置文件信息

    前言 .net core来势已不可阻挡.既然挡不了,那我们就顺应它.了解它并学习它.今天我们就来看看和之前.net版本的配置文件读取方式有何异同,这里不在赘述.NET Core 基础知识. ps:更新 ...

  8. Asp.NetCore 读取配置文件帮助类

    /// <summary> /// 读取配置文件信息 /// </summary> public class ConfigExtensions { public static ...

  9. 1.selenium实战之从txt文档读取配置信息并执行登录

    前置条件: 1.本机已搭建ECShop3.0网站 2.在脚本目录创建了user.txt文本如下: 目的:实现从txt中读取配置文件信息,本实战中,包含url地址.用户名.密码,然后进行ESChop的登 ...

随机推荐

  1. 【Spring Framework】Spring 入门教程(一)控制反转和依赖注入

    参考资料 Spring 教程 说在前面 什么样的架构,我们认为是一个优秀的架构? 判断准则:可维护性好,可扩展性好,性能. 什么叫可扩展性好? 答:在不断添加新的代码的同时,可以不修改原有代码,即符合 ...

  2. Git初始化及仓库创建和操作

    一.基本信息配置 1.全局配置用户名 git config --global user.name "YeHuan-byte" 2.全局配置邮箱 git config --globa ...

  3. Socket通信和多线程的总结

    1.ServerSocket进行多线程接收 package com.yh.chat; import java.io.IOException; import java.net.ServerSocket; ...

  4. 【C#】【MySQL】C#连接MySQL数据库(二)解析

    C# MySQL 实现简单登录验证 后端代码解析 Visual Studio中使用MySQL的环境配置 下文所有到的代码(前端后端) 请查阅这篇博文 C#连接MySQL数据库(一)代码 获取前端数据 ...

  5. 【Git】【Gitee】通过git远程删除仓库文件

    安装Git Git安装配置-菜鸟教程 没有安装下载的,请读者自行安装下载. 启动与初步配置 配置用户名与邮箱 git config --global user.name "用户名" ...

  6. Java中的选择结构(二)

    选择结构(二) 学习本章会用到的单词: case:实例,情形,情况 switch:转换,切换,开关 default:系统默认值,违约,预设.缺省 exit:出口,通道,退出 consume:消耗,耗费 ...

  7. Nginx平滑升级版本

    目录 一.简介 说明 环境 二.安装 三.使用验证 一.简介 说明 Nginx版本迭代迅速,新版本提供了很多功能,好在Nginx支持不停服务进行升级. 版本之间差距不要太大,不然会导致很多东西不支持 ...

  8. 转:UITableView学习笔记

    UITableView学习笔记        作者:一片枫叶 看TableView的资料其实已经蛮久了,一直想写点儿东西,却总是因为各种原因拖延,今天晚上有时间静下心来记录一些最近学习的 TableV ...

  9. 『学了就忘』Linux系统定时任务 — 87、只执行一次的定时任务

    目录 1.at服务管理 2.at命令的访问控制 3.at命令 4.其他at管理命令 5.总结 定时任务是在服务器上常用到的一个工作. 在你指定的时间,系统会自动执行你指定的程序(脚本或者命令). Li ...

  10. 在Winform项目和Web API的.NetCore项目中使用Serilog 来记录日志信息

    在我们常规的调试或者测试的时候,喜欢把一些测试信息打印在控制台或者记录在文件中,对于.netframework项目来说,我们输出控制台的日志信息习惯的用Console.WriteLine来输出查看,不 ...