python读写配置文件

在写测试脚本时,经常有一些需要变动的数据,可以单独放在ini文件里,然后读取传递给相应的函数,这样程序操作更灵活
这里主要说的就是python使用自带的configparser模块用来读取配置文件,配置文件的形式类似windows中的ini文件,但这使之个文件后缀而已,自然可以是.con或者.txt,但里面内容却是类似的。如下,以.ini文件为例,新建config.ini文件:

[Mysql-Database]
host = localhost
user = root
password = 123456
db = test
charset : utf8
others : hahaha

[Email]
host = https://mail.qq.com
address = 1715338780@qq.com
password = 123456

其中中括号中的是section
section下是以key=value 格式的键值对,或者key:value的形式
新建一个readconfig.py文件,读取配置文件的信息

import configparser

cf = configparser.ConfigParser()
cf.read("config.ini")  

secs = cf.sections()  # 获取文件中所有的section(一个配置文件中可以有多个配置,如数据库相关的配置,邮箱相关的配置,每个section由[]包裹,即[section]),并以列表的形式返回
print('secs is',secs)

options = cf.options("Mysql-Database")  # 获取某个section名为Mysql-Database所对应的键
print('options is',options)

items = cf.items("Mysql-Database")  # 获取section名为Mysql-Database所对应的全部键值对
print('items is',items)

host = cf.get("Mysql-Database", "host")  # 获取[Mysql-Database]中host对应的值
print('host is',host)

上述代码运行结果如下,可以和config.ini进行对比

secs is ['Mysql-Database', 'Email', 'add_data']
options is ['host', 'user', 'password', 'db', 'charset', 'others']
items is [('host', 'localhost'), ('user', 'root'), ('password', '123456'), ('db', 'test'), ('charset', 'utf8'), ('others', 'hahaha')]
host is hahaha

以上函数是对配置文件的读取,一下是对配置文件的添加或者修改

import configparser
cf = configparser.ConfigParser()

cf.add_section('add_Data')#添加section到配置文件
cf.set('add_Data','new_name','mxh')#add_Data section新增new_name参数和值
cf.set('add_Data','new_password','222')#add_Data section新增new_password参数和值
cf.write(open('config.ini','w'))#写完数据要write一下
print(cf.items('add_Data'))#可以打印刚添加的新内容查看

之后会在配置文件中看到结果,如果想修改其中的值,直接和新增加方式一样,
在这里插入图片描述

总结方法:

  • 创建ConfigParser实例
config=ConfigParser.ConfigParser()
  • 读取配置文件
config.read(filename)
  • 返回某个项目中的所有键的序列
config.options(section)
  • 返回section中的option的键值
config.get(section,option)
  • 添加一个配置文件的section节点
config.add_section(section-name)
  • 设置某个section中键名为option的值
config.set(section,option,val)
  • 返回配置文件中所有的section
config.section()
  • 写入配置文件
config.write(obj_file)

你可能感兴趣的:(Python)