python加载ini配置文件(configparser)

前言

使用配置文件来灵活的配置一些参数是一件很常见的事情,配置文件的解析并不复杂,在python里更是如此,在官方发布的库中就包含有做这件事情的库,那就是configParser

configParser解析的配置文件的格式比较象ini的配置文件格式,就是文件中由多个section构成,每个section下又有多个配置项

ini

1.ini配置文件格式如下:

;这里是注释

[section0]
key0 = value0
key1 = value1

[section1]
key2 = value2
key3 = value3

 

2.section不能重复,里面数据通过section去查找,每个seletion下可以有多个key和vlaue的键值对,注释用英文分号(;)

configparser

1.python3里面自带configparser模块来读取ini文件

# python3
import configParser

敲黑板:python2的版本是Configparser

# python2
import ConfigParser

 

2.新建一个ini文件

3.注释里面有中文的话,这里代码跟python2是有点区别的,python2里面直接conf.read(cfgpath)就可以了,python3需要加个参数:encoding=”utf-8”

[A]
;注释A
user    = user_a
pwd     = password_a

[B]
;注释B
user    = user_b
pwd     = password_b

敲黑板:如果ini文件里面写的是数字,读出来默认是字符串

# coding:utf-8

import configparser
import os

curpath = os.path.dirname(os.path.realpath(__file__))
cfgpath = os.path.join(curpath, "cfg.ini")
# 创建管理对象
conf = configparser.ConfigParser()
# 读ini文件
conf.read(cfgpath, encoding="utf-8")  # python3
# conf.read(cfgpath)  # python2
# 获取所有的section
sections = conf.sections()
print(sections)  # 返回list
items = conf.items('A')
print(items)  # list里面对象是元祖

 

运行结果:

['A', 'B']
[('user', 'user_a'),
('pwd', 'password_a')]

 

remove

1.如果想删除section中的一项,比如我想删除[A]下的user 这一

# 删除一个 section中的一个 item(以键值KEY为标识)

conf.remove_option('A', "user")

 

2.删除整个section这一项

conf.remove_section('A')

3.参考代码:

# coding:utf-8

import configparser
import os

curpath = os.path.dirname(os.path.realpath(__file__))
cfgpath = os.path.join(curpath, "cfg.ini")
print(cfgpath)  # cfg.ini的路径
# 创建管理对象
conf = configparser.ConfigParser()
# 删除一个 section中的一个 item(以键值KEY为标识)
conf.remove_option('A', "user")
items = conf.items('A')
print(items)  # list里面对象是元祖
# 删除一个 section
conf.remove_section('A')
sects = conf.sections()
print(sects)  # list里面对象是元祖

 

add

1.新增一个section

# 添加一个select
conf.add_section("C")
print(conf.sections())

 

2.section里面新增key和value

# 往select添加key和value
conf.set("C", "user", "user_c")
conf.set("C", "pwd", "password_c")

 

write写入

1.write写入有两种方式,一种是删除原文件内容,重新写入:w

conf.write(open(cfgpath, “w”))  # 删除原文件重新写入

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

conf.write(open(cfgpath, “a”))  # 追加模式写入

2.前面讲的remove和set方法并没有真正的修改ini文件内容,只有当执行conf.write()方法的时候,才会修改ini文件内容,举个例子:在ini文件上追加写入一项section内容

# coding:utf-8

import configparser
import os

curpath = os.path.dirname(os.path.realpath(__file__))
cfgpath = os.path.join(curpath, "cfg.ini")
print(cfgpath)  # cfg.ini的路径
# 创建管理对象
conf = configparser.ConfigParser()
# 添加一个select
conf.add_section("A")
print(conf.sections())
# 往select添加key和value
conf.set("A", "user", "user_a")
conf.set("A", "pwd", "password_a")
items = conf.items('A')
print(items)  # list里面对象是元祖
conf.write(open(cfgpath, "a"))  # 追加模式写入

 

运行后会发现ini文件最后新增了写入的内容了

set修改ini文件

1.比如我想把前面ini文件里面的[A]下的user改成”中文”
敲黑板:这里写入中文的话,需要加上写入的编码格式:encoding=”utf-8”

转:https://blog.csdn.net/zhusongziye/article/details/80024530

你可能感兴趣的:(python加载ini配置文件(configparser))