configparser模块(十六)
ConfigParser模块在python3中修改为configparser.这个模块定义了一个ConfigParser类,该模块的作用就是用来读取配置文件的,使用模块中的RawConfigParser()、ConfigParser()、 SafeConfigParser()这三个方法,创建一个对象使用对象的方法对指定的配置文件做增删改查的操作。一般做自动化测试的时候,会使用到这个模块,用来操作配置文件(ini文件)封装一些常量。比如数据库、邮件、用户名密码、项目常量等等
ini 文件是一种常用配置文件,ini 文件主要如下:
- ini 文件格式,由节、键、值组成
文件格式:
[section] # 节
key = value # key:键,value:值
现在我们来编写一个ini文件,代码如下:
[user]
name = qianfu
age = 19
id = 1234
date = 2023-11-03
[courses]
name = python
age = 19
ini 文件需要通过 configparser 模块操作,configparser 是 Python 中自带模块,常用的方法操作如下表:
方法 | 作用 |
---|---|
config = configparser.ConfigParser() | 创建 ConfigParser 对象 |
config.read(filenames, encoding=None) | 读取配置文件 |
config.sections() | 获取所有的 section,除 default 节点外 |
config.default_section | 只能获取 default 节点的 section |
config.options(section) | 获取指定 section 下所有的 key |
config.get(section, option,…) | 获取指定 section 下指定 key 的值 |
config.set(section, option,…) | 设置section 下指定 key 的值 |
config.items(section,…) | 获取指定 section 下所有 key 与 value |
config.has_section(section) | 检查指定的section并返回bool值 |
config.has_option(section, option) | 检查指定的section下的指定option并返回bool值 |
config.remove_option(section, option,…) | 删除指定 section 下指定 key 与 value |
config.remove_section(section) | 删除指定的section |
我们使用以下的语句,导入configparser模块:
import configparser
初始化对象并读取文件
import configparser
import os
# 创建对象实例化
config = configparser.ConfigParser()
dirPath = os.path.dirname(os.path.realpath(__file__))
inipath = os.path.join(dirPath,'test.ini')
# 读取配置文件,如果配置文件不存在则创建
print(config.read(inipath,encoding='utf-8'))
以上代码输出如下:
获取并打印所有节点的名称
import configparser
# 创建对象实例化
config = configparser.ConfigParser()
config.read('test.ini',encoding="UTF-8")
secs = config.sections()
print(secs)
以上代码输出如下:
获取指定节点的所有key
import configparser
# 创建对象实例化
config = configparser.ConfigParser()
config.read('test.ini',encoding="UTF-8")
option = config.options('user')
print(option)
以上代码输出如下:
获取指定节点的键值对
import configparser
# 创建对象实例化
config = configparser.ConfigParser()
config.read('test.ini',encoding="UTF-8")
item_list = config.items('user')
print(item_list)
以上代码输出如下:
获取指定节点的指定key的value
import configparser
# 创建对象实例化
config = configparser.ConfigParser()
config.read('test.ini',encoding="UTF-8")
val = config.get('user','age')
print('user的age值为:',val)
以上代码输出如下:
检查section或option是否存在,并且返回bool值
import configparser
# 创建对象实例化
config = configparser.ConfigParser()
config.read('test.ini',encoding="UTF-8")
has_sec = config.has_section('user')
print(has_sec)
has_opt = config.has_option('user','name')
print(has_opt)
以上代码输出如下:
添加一个section和option并赋值
import configparser
# 创建对象实例化
config = configparser.ConfigParser()
config.read('test.ini',encoding="UTF-8")
#添加一个section
config.add_section("permission")
#添加一个options并赋值
config.set("permission","isMember","true")
with open("test.ini","w",encoding="UTF-8") as file:
config.write(file)
可以看到我们的test.ini文件成功被添加了添加一个section和option并赋值为true了:
删除一个option
import configparser
# 创建对象实例化
config = configparser.ConfigParser()
config.read('test.ini',encoding="UTF-8")
print('删除前的option:',config.items('user'))
config.remove_option('user','age')
print("删除后的option:",config.items('user'))
with open("test.ini","w",encoding="UTF-8") as file:
config.write(file)
以上代码输出如下:
删除一个section
import configparser
# 创建对象实例化
config = configparser.ConfigParser()
config.read('test.ini',encoding="UTF-8")
print('删除前的section: ',config.sections())
config.remove_section('user')
print('删除后的section: ',config.sections())
with open("test.ini","w",encoding="UTF-8") as file:
config.write(file)
以上代码输出如下: