学习目录
configparser使用介绍
1)获取sections
2)获取每个sections的options列表
3)获取section的option对应的值
4) 获取某个section的全部内容,返回嵌套元组的列表
5)判断是否存在section或者option
6)修改配置文件的某个值
7)添加section和option值
8)删除section和option值
大家都知道在开发过程或者自动化测试过程中,经常将一些配置信息存放在后缀为ini的文件中方便程序解析和使用。在python环境下我们使用自带的configparser模块来解析ini配置文件。
ini配置文件格式一般如下:每个中括号‘[ ]’内的内容代表1组配置信息,一般称其为一组section,每个section 下面包含类似于key=value 的配置内容。
举例:某程序中包含配置文件config.ini
[mysql_db]
db_host = 127.0.0.1
db_port = 1307
db_user = root
db_pass = root
[timeout]
timeout= 10
configparser使用介绍
导入configparder,使用configparser.ConfigParser()初始化配置文件内容,通过read函数获取文本内容。
import configparser
config = configparser.ConfigParser()
config.read("config.ini", encoding="utf-8")
1)获取sections
sections = config.sections() #返回列表
print(sections)
结果:
['mysql_db', 'timeout']
2)获取每个sections的options列表
db_options = config.options('mysql_db')
print(db_options)
timeout_options = config.options('timeout')
print(timeout_options)
结果:
['db_host', 'db_port', 'db_user', 'db_pass']
['timeout']
3)获取section的option对应的值
使用get函数获取option
db_host = config.get('mysql_db','db_host')
print(db_host)
结果:
127.0.0.1
4)获取某个section的全部内容,返回嵌套元组的列表
#使用items函数,参数填一个section
items = config.items('mysql_db')
print(items)
结果:
[('db_host', '127.0.0.1'), ('db_port', '1307'), ('db_user', 'root'), ('db_pass', 'root')]
然后可以对元组做for循环
for key,value in items:
print(key,value)
5)判断是否存在section或者option
使用函数has_section和has_option来判断是否存在section和option
print(f'是否存在该section {config.has_section("mysql_db")}')
print(f'是否存在该section {config.has_section("xxxxx")}')
print(f'是否存在该option {config.has_option("mysql_db","db_host")}')
print(f'是否存在该option {config.has_option("mysql_db","xxxxx")}')
很明显第1个和第3个为True,其他不存在的为False
是否存在该section True
是否存在该section False
是否存在该option True
是否存在该option False
6)修改配置文件的某个值
使用set函数修改某个值
config.set("mysql_db", "db_host", "192.168.1.1")
db_host = config.get('mysql_db','db_host')
print(db_host)
结果如下: db_host已经被修改为192.168.1.1
192.168.1.1
但此时打开配置文件,发现配置文件并不会被修改。
如果想顺道修改配置文件的值,可以使用write函数。write函数传入可以写入的文件对象。
config.write(open("config.ini", "w"))
7)添加section和option值
使用add_section函数添加一个section,然后使用set设置option值。如果想同步修改配置文件,同样可以使用write函数。
config.add_section('oracle_db')
config.set("oracle_db", "db_host", "192.168.1.1")
db_host = config.get('oracle_db','db_host')
config.write(open("config.ini", "w"))
配置文件修改如下:
8)删除section和option值
使用remove_section函数删除section下所有内容,使用remove_option函数删除section下某个option的内容,如果想同步修改配置文件,同样可以使用write函数。
config.remove_section('oracle_db')
config.remove_option('mysql_db','db_host')
config.write(open("config.ini", "w"))
删除后结果如下:
共勉: 东汉·班固《汉书·枚乘传》:“泰山之管穿石,单极之绠断干。水非石之钻,索非木之锯,渐靡使之然也。”
-----指水滴不断地滴,可以滴穿石头;
-----比喻坚持不懈,集细微的力量也能成就难能的功劳。
----感谢读者的阅读和学习和关注,谢谢大家。