INI介绍

INI是英文“初始化”(initialization)的缩写,被用来对操作系统或特定程序初始化或进行参数设置。由节(section)、

键(key)、值(value)构成。在windows系统中有很多INI文件,例如“System32.ini”和“Win.ini”,相信大家并不陌生。Python

中操作配置文件的模块为configparser,这个模块可以用来解析与Windows上INI文件结构类似的文件。

关于configparser

在python2中该模块名为Configparser,到python3才改为configparser,该模块是用来解析 ini 配置文件的解析器。

其作用就是使用模块中的RawConfigParser()、ConfigParser()、SafeConfigParser()这三个方法(任选一种),创建一

个对象使用对象的方法对指定的配置文件做增删改查操作。

本次使用的python版本为3.8,编译器使用pycharm。

INI文件格式

python最简单的配置文件(Python之ini配置文件详解)(1)

INI配置文件组成:

section:表示一个区块,由方括号及方括号中的名称组成,section的范围为当前方括号到下一个方括号的内容,如“DEFAULT”,“select”,“connect_mysql”。

option:表示section中的配置项,由key、分隔符和value组成的键值对,如“select”下的“broswer = Chrome”。

注释:行注释用井号“#”或者分号“;”表示,特别需要注意的是必须得是行开头(前面可以有空格),用在行中间的就不会算作是注释了。

DEFAULT:这是一个特殊的section,会用作其他section的option取不到值时的备用值,或者可以理解为它是一个root,其他的section都是它的子section,但不是必须提供的。

读取配置文件

import os import configparser conf = configparser.ConfigParser() # 类的实例化 curpath = os.path.dirname(os.path.realpath(__file__)) path = os.path.join(curpath,'read.ini') conf.read(path,encoding="utf-8") value = conf['select']['url'] print("通过read方法取得的值为:",value) value = conf.get('login','username') print('通过get方法取得的值:',value) value = conf.items('login') # 读取一个section中的所有数据,返回一个列表 print("通过items方法取得的值:",value) value = conf.getint('connect_mysql','port') # 指定读取数据的类型 print("指定数据类型取出的值:",value) section = conf.sections() # 读取配置文件中所有section print(section)

运行结果

python最简单的配置文件(Python之ini配置文件详解)(2)

注意: 配置文件注释有中文的,在python3中要加上参数encoding="utf-8",不然会报错。

conf.read(path,encoding="utf-8")

写入配置文件

import os import configparser conf = configparser.ConfigParser() # 类的实例化 curpath = os.path.dirname(os.path.realpath(__file__)) path = os.path.join(curpath,'read.ini') conf.add_section('login') # 添加一个新的section conf.set('login','username','admin') conf.set('login','password','123123') # 往配置文件写入数据 conf.write(open(path,'a')) # 保存数据

运行以后查看配置文件,可以看到新的section已经写入到文件中。

python最简单的配置文件(Python之ini配置文件详解)(3)

write写入常用的两种方式,第一种是删除原文件内容,重新写入:w

conf.write(open(path,'w'))

第二种是在原文件基础上继续写入内容,追加模式写入:a

conf.write(open(path,'a'))

,