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. Zookeeper的选举算法和脑裂问题

    ZK介绍 ZK = zookeeper ZK是微服务解决方案中拥有服务注册发现最为核心的环境,是微服务的基石.作为服务注册发现模块,并不是只有ZK一种产品,目前得到行业认可的还有:Eureka.Con ...

  2. 一文读懂RESTful架构

    转载自https://zhuanlan.zhihu.com/p/381554129 RESTful架构究竟是什么 别着急,想要了解RESTful,我们先来了解一位大佬Roy Thomas Fieldi ...

  3. MFC入门示例之组合框(CComboBox)、列表框(CListBox)

    1 //添加按钮点击事件 2 void CMFCApplication4Dlg::OnBnClickedButton1() 3 { 4 CString strText; 5 //获取文本框的值 6 G ...

  4. 使用beanFactory工厂实例化容器的方式实现单例模式

    //配置文件bean.properties(注意书写顺序) accountService=com.itheima.service.impl.AccountServiceImplaccountDao=c ...

  5. ssm中的注解

    1.@Controller 2.@RequestMapping 3.@RequestParam public String getUser(HttpSession session,@RequestPa ...

  6. Intellij IDEA设置自定义类描述信息

    Intellij IDEA设置自定义类描述信息 样图 新建Java类自动生成模板信息:作者,时间,描述和其他信息 步骤 以 IntelliJ IDEA Community Edition 2020.1 ...

  7. ORA-31633:unable to create master table "DP.SYS_EXPORT_FULL_11" ORA-01658

    问题描述:在进行数据泵进行数据库备份的时候,但是导出命令报错,环境是19C 4节点的rac 一体机.目前磁盘空间需要清理,清理之前先备份一下数据库 ORA-31626:job does not exi ...

  8. [BUUCTF]PWN——picoctf_2018_buffer overflow 1/2

    picoctf_2018_buffer overflow 1 附件 步骤: 例行检查,32位程序,没开保护 本地运行一下程序,看看程序大概的执行情况 32位ida载入,习惯性的检查程序里的字符串,发现 ...

  9. 【python】青果教务系统模拟登陆

    使用 python 的 selenium + chrome 来模拟登陆学校教务系统 完整代码传至 github,增加了一个自动识别验证码的功能,不过是用的别人的轮子,识别度也不高 这是需要手动输入验证 ...

  10. Postman环境变量的使用

    前言 请注意,Postman新版有ui上的改动,本文使用的Postman 版本8.4.0 for Mac, ui有调整,但是功能无改变. Postman是一款接口调测的软件,服务端开发的同学肯定会对自 ...