前言

使用配置文件来灵活的配置一些参数是一件很常见的事情,配置文件的解析并不复杂,在python里更是如此,在官方发布的库中就包含有做这件事情的库,那就是configParser。configParser解析的配置文件的格式比较象ini的配置文件格式,就是文件中由多个section构成,每个section下又有多个配置项。括号“[ ]”内包含的为section。紧接着section 为类似于key-value 的options 的配置内容。

比如,我的目录如下,在test_config下有一个config.ini配置文件

一、ConfigParser简介

ConfigParser 是用来读取配置文件的包。配置文件的格式如下:中括号“[ ]”内包含的为section。section 下面为类似于key-value 的配置内容。括号“[ ]”内包含的为section。紧接着section 为类似于key-value 的options 的配置内容。

# 定义config分组
[config]
platformName=Android
appPackage=com.romwe
appActivity=com.romwe.SplashActivity # 定义cmd分组
[cmd]
viewPhone=adb devices
startServer=adb start-server
stopServer=adb kill-server
install=adb install aaa.apk
id=1
weight=12.1
isChoice=True # 定义log分组
[log]
log_error=true

二、ConfigParser 初始化对象

使用ConfigParser 首选需要初始化实例,并读取配置文件:

PS:python3里面自带configparser模块来读取ini文件,敲黑板:python2的版本是Configparser

# python3
import configParser
config = configparser.ConfigParser()
config.read("config_ini", encoding="utf-8")

三、ConfigParser 常用方法

1、获取所用的section节点

# 获取所用的section节点
import configparser
config = configparser.ConfigParser()
config.read("config_ini", encoding="utf-8")
print(config.sections())
#运行结果
# ['config', 'cmd', 'log']

2、获取指定section 的options。即将配置文件某个section 内key 读取到列表中:

import configparser
config = configparser.ConfigParser()
config.read("config_ini", encoding="utf-8")
r = config.options("config")
print(r)
#运行结果
# ['platformName', 'appPackage', 'appActivity']

3、获取指点section下指点option的值

import configparser
config = configparser.ConfigParser()
config.read("config.ini", encoding="utf-8")
r = config.get("config", "platformName")

# r1 = config.getint("db", "k1") #将获取到值转换为int型
# r2 = config.getboolean("db", "k2" ) #将获取到值转换为bool型
# r3 = config.getfloat("db", "k3" ) #将获取到值转换为浮点型

print(r)

#运行结果 # Android

4、获取指点section的所用配置信息

import configparser
config = configparser.ConfigParser()
config.read("config.ini", encoding="utf-8")
r = config.items("platformName")
print(r)
#运行结果
#[('platformName', 'Android'), ('appPackage', 'com.romwe'), ('appActivity', 'com.romwe.SplashActivity')]

5、修改某个option的值,如果不存在则会出创建

# 修改某个option的值,如果不存在该option 则会创建
import configparser
config = configparser.ConfigParser()
config.read("config_ini", encoding="utf-8")
config.set("config", "platformName", "ios") #修改platformName的值为ios
config.write(open("config.ini", "w"))
# 运行结果

# 定义config分组
[config]
platformName=ios
appPackage=com.romwe
appActivity=com.romwe.SplashActivity # 定义cmd分组
[cmd]
viewPhone=adb devices
startServer=adb start-server
stopServer=adb kill-server
install=adb install aaa.apk
id=1
weight=12.1
isChoice=True # 定义log分组
[log]
log_error=true

6、检查section或option是否存在,bool值

import configparser
config = configparser.ConfigParser()
config.has_section("config") #是否存在该section
config.has_option("config", "platformName") #是否存在该option

7、添加section 和 option

import configparser
config = configparser.ConfigParser()
config.read("config.ini", encoding="utf-8")
if not config.has_section("brand"): # 检查是否存在section
config.add_section("brand")
if not config.has_option("brand", "China"): # 检查是否存在该option
config.set("brand", "China", "xiaomi")
config.write(open("config.ini", "w"))
# 运行结果

# 定义config分组
[config]
platformName=Android
appPackage=com.romwe
appActivity=com.romwe.SplashActivity # 定义cmd分组
[cmd]
viewPhone=adb devices
startServer=adb start-server
stopServer=adb kill-server
install=adb install aaa.apk
id=1
weight=12.1
isChoice=True # 定义log分组
[log]
log_error=true [brand]
China=xiaomi

8、删除section 和 option

import configparser
config = configparser.ConfigParser()
config.read("config.ini", encoding="utf-8")
config.remove_section("brand") #整个section下的所有内容都将删除
config.write(open("config.ini", "w"))
# 定义config分组
[config]
platformName=Android
appPackage=com.romwe
appActivity=com.romwe.SplashActivity # 定义cmd分组
[cmd]
viewPhone=adb devices
startServer=adb start-server
stopServer=adb kill-server
install=adb install aaa.apk
id=1
weight=12.1
isChoice=True # 定义log分组
[log]
log_error=true

9、写入文件

以下的几行代码只是将文件内容读取到内存中,进过一系列操作之后必须写回文件,才能生效。

import configparser
config = configparser.ConfigParser()
config.read("comfig.ini", encoding="utf-8")

写回文件的方式如下:(使用configparser的write方法)

config.write(open("config.ini", "w"))

Python使用ConfigParser模块读取配置文件(config.ini)以及写入配置文件的更多相关文章

  1. python中configparser模块读取ini文件

    python中configparser模块读取ini文件 ConfigParser模块在python中用来读取配置文件,配置文件的格式跟windows下的ini配置文件相似,可以包含一个或多个节(se ...

  2. python-通过configparser模块读取后缀为 .ini 的配置文件信息

    前言 一般为了方便会将路径,连接信息等写到配置文件(通常会将这些信息写到yaml,ini....配置文件)中,configparser模块读取后缀为 .ini 的配置文件信息 配置文件格式 #存在 c ...

  3. Python的ConfigParser模块读取ini配置文件 报错(持续更新总结)

    1.ConfigParser.MissingSection什么的错误巴拉巴拉一堆,其实根本上就是没有读到配置文件,然后我去检查了一遍路径,发现没有问题,我是将文件的路径作为一个字符串拼接好传到另一个专 ...

  4. python封装configparser模块获取conf.ini值

    configparser模块是python自带的从文件中获取固定格式参数的模块,因为是python只带的,大家用的应该很多,我觉得这个参数模块比较灵活,添加参数.修改参数.读取参数等都有对应的参数供用 ...

  5. python封装configparser模块获取conf.ini值(优化版)

    昨天晚上封装了configparser模块,是根据keyname获取的value.python封装configparser模块获取conf.ini值 我原本是想通过config.ini文件中的sect ...

  6. python中confIgparser模块学习

    python中configparser模块学习 ConfigParser模块在python中用来读取配置文件,配置文件的格式跟windows下的ini配置文件相似,可以包含一个或多个节(section ...

  7. python 的ConfigParser模块

    Python 之ConfigParser模块 一.ConfigParser简介 ConfigParser 是用来读取配置文件的包.配置文件的格式如下:中括号“[ ]”内包含的为section.sect ...

  8. python中configparser模块

    python中的configparse模块的使用 主要用来解析一些常用的配置,比如数据配置等. 例如:有一个dbconfig.ini的文件 [section_db1] db = test_db1 ho ...

  9. Python中ConfigParser模块应用

    Python中ConfigParser模块应用 Python的ConfigParser模块定义了3个对INI文件进行操作的类 RawConfigParser.ConfigParser和SafeConf ...

随机推荐

  1. 2021“MINIEYE杯”中国大学生算法设计超级联赛(8)(1002,1004,1006,1009)

    前言 依旧是白嫖账号,只打了一些题/kk 正题 1002 Buying Snacks 题目大意 \(n\)个物品,每个可以买一次也可以不买,如果买需要选择\(1/2\)块钱的,然后也可以相邻两个一起买 ...

  2. P3703-[SDOI2017]树点涂色【LCT,线段树】

    正题 题目链接:https://www.luogu.com.cn/problem/P3703 题目大意 \(n\)个点的一棵树开始所有点有不同的颜色,\(m\)次操作 将根节点到\(x\)节点的路径上 ...

  3. Oracle部署迁移手册

    第1章 安装准备 1.1 安装环境 操作系统:Redhat6.5 x64 32核CPU 62G内存 系统盘300G 数据磁盘3T Oracle软件:Oracle Database 11g Enterp ...

  4. 将Oracle数据库数据每天备份恢复一次数据到另一台服务器上两份数据

    1.创建用户,授权,创建测试数据 创建用户 CREATE USER test identified by 123; 授权 grant dba to test; 创建测试数据 create table ...

  5. Java初步学习——2021.10.05每日总结,第五周周三

    (1)今天做了什么: (2)明天准备做什么? (3)遇到的问题,如何解决? 今天学了对象与类,如何定义类和创建对象,以及构建方法的用法. 明天课比较多,把今天未学的例子敲一遍好了. 没有遇到什么问题.

  6. CF125E MST company (凸优化+MST)

    qwq自闭的一个题 我来修锅辣!!!!!! 这篇题解!可以\(hack\)全网大部分的做法!!! 首先,我们可以把原图中的边,分成两类,一类是与\(1\)相连,另一类是不与\(1\)相连. 原题就转化 ...

  7. vj-E题Ehab and Path-etic MEXs

    Ehab and Path-etic MEXs 题意:给定一棵树所有的边,对所有的边进行标号,询问任意两点Mex的最大值最小的的标号方案(输出任何一种). Mex(u,v)表示从u到v的简单路径中没有 ...

  8. Eureka使用总结

    关于Eureka: 提供基于 REST的服务,在集群中主要用于服务管理.使用该框架,可以将业务组件注册到Eureka容器中,这些组件可进行集群部署,Eureka主要维护这些服务的列表并自动检查他们的状 ...

  9. Java(11)方法详细介绍

    作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15201577.html 博客主页:https://www.cnblogs.com/testero ...

  10. vue基本指令与脚手架基本配置

    脚手架(@vue/cli)创建项目启动服务 1.创建项目 vue create 项目名字 2.启动项目 进入项目根目录,运行以下命令 yarn serve 3.脚手架目录代码分析 ├── node_m ...