VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > Python基础教程 >
  • python基础教程之configParser模块详谈

前言

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

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

ConfigParser简介


 

  ConfigParser 是用来读取配置文件的包。配置文件的格式如下:中括号“[ ]”内包含的为section。section 下面为类似于key-value 的配置内容。

ConfigParser模块在python3中修改为configparser.这个模块定义了一个ConfigParser类,该类的作用是使用配置文件生效,配置文件的格式和windows的INI文件的格式相同

  该模块的作用 就是使用模块中的RawConfigParser()ConfigParser()、 SafeConfigParser()这三个方法(三者择其一),创建一个对象使用对象的方法对指定的配置文件做增删改查 操作。配置文件有不同的片段组成和Linux中repo文件中的格式类似:

ini

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

#这是注释
;这里也是注释

[section0]

key0 = value0
key1 = value1

[section1]

key2 = value2
key3 = value3

  样例配置文件example.ini

1
2
3
4
5
6
7
8
9
10
[db]
db_host = 127.0.0.1
db_port = 69
db_user = root
db_pass = root
host_port = 69
 
[concurrent]
thread = 10
processor = 20

  

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

configparser

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

# python3
import configParser

 

  敲黑板:python2的版本是Configparser

# python2
import ConfigParser

 

2、在pycharm里面,新建一个ini文件:右键New->File, 输入框直接写一个.ini后缀文件就行了,然后写数据

 

 

3、ConfigParser 初始化对象

  使用ConfigParser 首选需要初始化实例,并读取配置文件:

import configparser
config = configparser.ConfigParser()
config.read("ini", encoding="utf-8")

 

  

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

import configparser
config = configparser.ConfigParser()
config.read("ini", encoding="utf-8")

 

  

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

复制代码
# coding:utf-8
# 作者:古风尘


import configparser
import os
curpath = os.path.dirname(os.path.realpath(__file__))
cfgpath = os.path.join(curpath, "demo.ini")
print(cfgpath)  # demo.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('db')
print(items)  # list里面对象是元祖
复制代码

 

  运行结果:

D:\debug_p3\cfg\demo.ini
['db_host', 'concurrent','book'] 
[('db_port', '127.0.0.1'),
('db_user', 'root'), 
('db_pass', 'root'), 
('hosr_port', '69')]

ConfigParser 常用方法

获取section节点

1、获取所用的section节点

复制代码
# 获取所用的section节点
import configparser
config = configparser.ConfigParser()
config.read("ini", encoding="utf-8")
print(config.sections())
#运行结果
# ['db', 'concurrent','book']
复制代码

 

 2、获取指定section 的options

  即将配置文件某个section 内key 读取到列表中:

复制代码
import configparser
config = configparser.ConfigParser()
config.read("ini", encoding="utf-8")
r = config.options("db")
print(r)
#运行结果
# ['db_host', 'db_port', 'db_user', 'db_pass', 'host_port']
复制代码

 

3、获取指点section下指点option的值

复制代码
import configparser
config = configparser.ConfigParser()
config.read("ini", encoding="utf-8")
r = config.get("db", "db_host")
# r1 = config.getint("db", "k1") #将获取到值转换为int型
# r2 = config.getboolean("db", "k2" ) #将获取到值转换为bool型
# r3 = config.getfloat("db", "k3" ) #将获取到值转换为浮点型
print(r)
#运行结果
# 127.0.0.1
复制代码

 

4、获取指点section的所用配置信息

复制代码
import configparser
config = configparser.ConfigParser()
config.read("ini", encoding="utf-8")
r = config.items("db")
print(r)
#运行结果
#[('db_host', '127.0.0.1'), ('db_port', '69'), ('db_user', 'root'), ('db_pass', 'root'), ('host_port', '69')]
复制代码

 

5、修改某个option的值,如果不存在则会出创建

# 修改某个option的值,如果不存在该option 则会创建
import configparser
config = configparser.ConfigParser()
config.read("ini", encoding="utf-8")
config.set("db", "db_port", "69")  #修改db_port的值为69
config.write(open("ini", "w"))

 

1
2
3
4
5
6
7
8
9
[db]
db_host = 127.0.0.1
db_port = 69
db_user = root
db_pass = root
 
[concurrent]
thread = 10
processor = 20

  

 
6、检查section或option是否存在,bool值
import configparser
config = configparser.ConfigParser()
config.has_section("section") #是否存在该section
config.has_option("section", "option")  #是否存在该option

remove

1、如果想删除section中的一项,比如我想删除[email_163]下的port 这一行

# 删除一个 section中的一个 item(以键值KEY为标识)
conf.remove_option('concurrent', "thread")

 

2、删除整个section这一项

conf.remove_section('concurrent')
3、删除section 和 option
 
import configparser
config = configparser.ConfigParser()
config.read("ini", encoding="utf-8")
config.remove_section("default") #整个section下的所有内容都将删除
config.write(open("ini", "w"))

 

1
2
3
4
5
6
7
8
9
[db]
db_host = 127.0.0.1
db_port = 69
db_user = root
db_pass = root
 
[concurrent]
thread = 10
processor = 20