Python使用ConfigParser模块读取配置文件(config.ini)以及写入配置文件
前言
使用配置文件来灵活的配置一些参数是一件很常见的事情,配置文件的解析并不复杂,在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"))
本博客所有文章仅用于学习、研究和交流目的,欢迎非商业性质转载。
本文来自博客园,作者:hello_殷,转载请注明原文链接:https://www.cnblogs.com/yinzuopu/p/15474408.html