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. 【Keras】神经网络的搭建

    Dense层的使用方法 参考:https://blog.csdn.net/qq_34840129/article/details/86319446 keras.layers.core.Dense( u ...

  2. 【C/C++】从矩阵左上角走到右下角

    tx的笔试,但是只过了10%,就离谱 #include <bits/stdc++.h> using namespace std; const int maxn = 1010; long d ...

  3. Linux 三剑客之grep

    目录 Linux 三剑客之grep 搭配命令-find 三剑客之grep: 正则表达式: Linux 三剑客之grep 搭配命令-find find命令是根据文件的名称或者属性查找文件,并不会显示文件 ...

  4. JAVAWEB项目报"xxx响应头缺失“漏洞处理方案

    新增一个拦截器,在拦截器doFilter()方法增加以下代码 public void doFilter(ServletRequest request, ServletResponse response ...

  5. 【LeetCode】424. 替换后的最长重复字符 Longest Repeating Character Replacement(Python)

    作者: 负雪明烛 id: fuxuemingzhu 公众号:每日算法题 本文关键词:LeetCode,力扣,算法,算法题,字符串,双指针,刷题群 目录 题目描述 题目大意 解题方法 双指针 代码 欢迎 ...

  6. 【剑指Offer】把数组排成最小的数 解题报告(Python)

    [剑指Offer]把数组排成最小的数 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews ...

  7. 教学日志:javaSE-数组

    一.一维数组 import java.util.Scanner; /* 数组:存储一组相同数据类型的有序集合. 特点: 1.数组中的元素必须是同一种数据类型,可以是基本数据类型,也可以是引用数据类型 ...

  8. eclipse的安装及最大子数组求和

    我安装的是eclipse.由于eclipse是一个基于Java的课扩展开发平台,所以在安装eclipse之前要先安装Java的开发工具JDK(Java Devolopment Dit),且安装JDK需 ...

  9. 【操作系统】Linux bash常用函数路径配置

    临时方法:export PATH=/usr/bin:/usr/sbin:/bin:/sbin长期方法:1.    vi /etc/profile2.    在最后插入并保存:    export PA ...

  10. CSS实现鼠标移入时图片的放大效果以及缓慢过渡

    transform:scale()可以实现按比例放大或者缩小功能. transition可以设置动画执行的时间,实现缓慢或者快速的执行动画,效果图如下: 源码: <!DOCTYPE html&g ...