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. CDN服务的含义

    CDN的全称是Content Delivery Network,即内容分发网络.CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全 ...

  2. Spring Boot的异步任务、定时任务和邮件任务

    一.异步任务 1.启动类添加注解@EnableAsync,开启异步任务注解功能: 2.需要异步执行的方法上添加@Async注解. 二.定时任务 1.启动类添加注解@EnableScheduling,开 ...

  3. 测试JDBCUtils的重用性

    package cn.itcast.jdbc;import cn.itcast.util.JDBCUtils;import java.sql.*;import java.util.Properties ...

  4. java上传图片或文件

    转载至:http://www.xdx97.com/#/single?bid=8b351a73-922c-eadc-512e-9e248a3efde9 前端通过form表单用post方式提交文件,后台进 ...

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

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

  6. 转:Android控件属性

    Android功能强大,界面华丽,但是众多的布局属性就害苦了开发者,下面这篇文章结合了网上不少资料,花费本人一个下午搞出来的,希望对其他人有用. 第一类:属性值为true或false android: ...

  7. 如何实现 range 函数的参数?

    关于 range 函数 Python内置的range函数可以接收三个参数: class range(stop): ... class range(start, stop[, step]): ... 标 ...

  8. 一站式云原生在线研发平台 StarOS 种子用户邀请计划正式开启!

    云时代的开发者,你好: 你是否也曾畅想过,关于云的未来? 不是作为消费者,也不是作为企业,是对于开发者而言,云会变成什么样. 同为开发者,我们常在想,我们开发了一个又一个应用,让太多人因服务在线而获益 ...

  9. LuoguP7505 「Wdsr-2.5」小小的埴轮兵团 题解

    Content 给出一个范围为 \([-k,k]\) 的数轴,数轴上有 \(n\) 个点,第 \(i\) 个点的位置为 \(a_i\).有 \(m\) 次操作,有且仅有以下三种: 1 x:所有点往右移 ...

  10. LuoguB2008 计算 (a+b)×c 的值 题解

    Content 输入 \(a,b,c\),输出 \((a+b)\times c\). 数据范围:\(-10000<a,b,c<10000\). Solution 关于 C++ 运算顺序可以 ...