背景
在实际工作中,我们经常会用到配置文件,对于配置文件的读写是基本操作,今天我们就一起来学习如何用 Python
轻松实现配置文件的读写操作。
关于 configparser
configparser
是 Python
内置的解析配置文件的库,他可以实现对 ini
文件的读写,同时也可以对配置文件中的占位符进行解析,总之是一个很好用,很有用的库。
怎么用 configparser
创建配置文件
创建一个名为 info.ini
的配置文件,内容如下:
[base] name = phyger age = 18 [nova] port = 9292 user = nova pwd = t@123 复制代码
以上,带方括号字符名为
section
,即配置块。形如k=v
格式的字符名为option
,即配置项。
读取配置
配置文件和代码在同路径下,代码如下:
import configparser config=configparser.ConfigParser() config.read('info.ini') print(config) 复制代码
输出如下:
<configparser.ConfigParser object at 0x000001CCBC3B8AC8> 复制代码
如上,config
为一个 ConfigParser
对象。
读取 section
import configparser config=configparser.ConfigParser() config.read('info.ini') print(config['base']) 复制代码
输出如下:
<Section: base> 复制代码
如上,返回结果为一个 Section
对象名为 base
。
读取 option-1
import configparser config=configparser.ConfigParser() config.read('info.ini') print(config['base']['name']) 复制代码
输出如下:
phyger 复制代码
如上,返回了配置文件中,base
配置块中的 name
的值为 phyger
。
读取 option-2
import configparser config=configparser.ConfigParser() config.read('info.ini') print(config.get('base','name')) 复制代码
使用 get
方法和上面的切片法得出的结果是一致的。
读取 section 中的 option 列表
import configparser config=configparser.ConfigParser() config.read('info.ini') print(config.items('base')) 复制代码
输出如下:
[('name', 'phyger'), ('age', '18')] 复制代码
插值表达式的应用
修改配置文件如下:
[base] name = phyger age = 18 msg = %(name)s-%(age)s [nova] port = 9292 user = nova pwd = t@123 复制代码
代码:
import configparser config=configparser.ConfigParser() config.read('info.ini') print(config.get('base','msg')) 复制代码
输出如下:
phyger-18 复制代码
配置写入
需求:新增一个名为 hello
的 section
,添加一条 option
。
import configparser # 创建ConfigParser对象 config=configparser.ConfigParser() # 读取配置文件 config.read('info.ini') print(config.get('base','msg')) # 添加section config.add_section('hello') # 添加option config['hello']['key']='value' # 将config对象写入配置文件 with open('info.ini',mode='w') as fp: config.write(fp) 复制代码
写入后的配置文件:
[base] name = phyger age = 18 msg = %(name)s-%(age)s [nova] port = 9292 user = nova pwd = t@123 [hello] key = value 复制代码
实战
代码运行过程中修改 option
,后续代码能够用到新的 option
。
import configparser # 创建ConfigParser对象 config=configparser.ConfigParser() # 读取配置文件 config.read('info.ini') name1=config.get('base','name') print('on start, my name is',name1) # 修改option config['base']['name']='flyboy' # 将config对象写入配置文件 with open('info.ini',mode='w') as fp: config.write(fp) # 重新获取option (这里不需要重新read,就能拿到新的数据,可以解决py作为配置文件的无法刷新数据的问题) name2=config.get('base','name') print('after modified, my name is',name2) 复制代码
输出如下:
on start, my name is phyger after modified, my name is flyboy