configparser模块的常见用法

configparser模块用于生成与windows.ini文件相似格式的配置文件,能够包含一节或多节(section),每一个节能够有一个或多个参数(键=值)python

在学习这个模块以前,先来看一个常常见到的配置文档:windows

[DEFAULT]
serveraliveinterval = 45
compression = yes
compressionlevel = 9
forwardx11 = yes

[bitbucket.org]
user = admin

[topsecret.server.com]
port = 1000345
forwardx11 = no

1.建立配置文件

如今来用python中的configparser模块生成一个与上面相同的配置文档学习

#先导入configparser模块
import configparser

#为其中一个方法定义一个变量
cfp=configparser.ConfigParser()

#定义"DEFAULT"节及其子参数
cfp["DEFAULT"]={"ServerAliveInterval":45,
                "Compression":"yes",
                "CompressionLevel":9,
                "ForwardX11":"yes"
                }
#定义“bitbucket.org”节
cfp["bitbucke.ort"]={"USER":"admin"}

#定义"topsecret.server.com"节及其参数
cfp["topsecret.server.com"]={"Port":1000345,"ForwardX11":"no"}

#把上面定义的节及其参数写入"cfp.ini"这个文件
with open("cfp.ini","w") as f:
    cfp.write(f)

运行程序后,生成的配置文件以下:测试

[DEFAULT]
serveraliveinterval = 45
compression = yes
compressionlevel = 9
forwardx11 = yes

[bitbucket.org]
user = admin

[topsecret.server.com]
port = 1000345
forwardx11 = no

能够看到,跟文章开始处的配置文件格式如出一辙的。code

2.读取配置文件中的变量

目标配置文件就已经生成了,那如今想读取一个配置文件里的某个选项,该怎么作呢?server

import configparser

cfp=configparser.ConfigParser()
#读取目标配置文件
cfp.read("cfp.ini")
#打印目标配置文件的节
print(cfp.sections())

理论上,读取配置文件的节,所得是一个列表,运行脚本,获得的字段为:rem

['bitbucket.org', 'topsecret.server.com']

这是由于第一节是“DEFAULT”字段,这个字段是默认对整个配置文件生效的,文档

因此"DEFAULT"默认是不会显示出来。get

若是把配置文件中的“DEFAULT”改为“DEFAULTS”,以下:it

[DEFAULTS]
serveraliveinterval = 45
compression = yes
compressionlevel = 9
forwardx11 = yes

[bitbucket.org]
user = admin

[topsecret.server.com]
port = 1000345
forwardx11 = no

而后再用上面的代码来读取整个配置文件的节,结果以下:

['DEFAULTS', 'bitbucket.org', 'topsecret.server.com']

打印“bitbucket.ort”节下全部的键和值

import configparser

cfp=configparser.ConfigParser()
#读取目标配置文件
cfp.read("cfp.ini")
print(cfp.items("bitbucket.org"))

从返回结果能够看到,把"DEFAULT"这个节下面的键和值也一块儿返回了,正如前面所说的,“DEFAULT”是默认全局生效的

[('serveraliveinterval', '45'), ('compression', 'yes'), ('compressionlevel', '9'), ('forwardx11', 'yes'), ('user', 'admin')]

打印“bitbucket.ort”节下全部的键

import configparser

cfp=configparser.ConfigParser()
#读取目标配置文件
cfp.read("cfp.ini")
print(cfp.options("bitbucket.org"))

结果同上面同样,"DEFAULT"下面的键也被一块儿返回了

['user', 'serveraliveinterval', 'compression', 'compressionlevel', 'forwardx11']

3.测试配置文件中的键和值

1.测试某个选项是否在配置文件中,可使用以下方法:

import configparser

cfp=configparser.ConfigParser()
#读取目标配置文件
cfp.read("cfp.ini")
print("topsecret.server.com" in cfp)

获得的结果为:

True

2.测试某个节下面是否有某个键

import configparser

cfp=configparser.ConfigParser()
#读取目标配置文件
cfp.read("cfp.ini")
print(cfp.get("bitbucket.org","compression"))

返回以下:

yes

4.修改配置文件

1.向配置文件里添加一个键值对

代码以下:

import configparser

cfp=configparser.ConfigParser()
#打开目标配置文件
cfp.read("cfp.ini")
#添加节
cfp.add_section("conf")
#为添加的节设置键和值
cfp["conf"]["group"]="group01"

#把修改写入配置文件
cfp.write(open("cfp.ini","w"))

添加后的文件以下:

[DEFAULTS]
serveraliveinterval = 45
compression = yes
compressionlevel = 9
forwardx11 = yes

[bitbucket.org]
user = admin

[topsecret.server.com]
port = 1000345
forwardx11 = no

[conf]
group = group01

能够看到已经增长一个“conf”的节,“conf”节下面增长一个值为“group01”的键“group”

2.删除配置文件的节及其对就的键和值

import configparser

cfp=configparser.ConfigParser()
#读取目标配置文件
cfp.read("cfp.ini")

#从“topsecret.server.com”节中删除
cfp.remove_option("topsecret.server.com","forwardx11")
cfp.write(open("cfp.ini","w"))

返回结果以下:

[DEFAULT]
serveraliveinterval = 45
compression = yes
compressionlevel = 9
forwardx11 = yes

[bitbucket.org]
user = admin

[topsecret.server.com]
port = 1000345

能够看到"forwardx11"这个键值对已经从"topsecret.server.com"这个节中删除掉了。

3.为某个键设置值:

代码以下:

import configparser

cfp=configparser.ConfigParser()
#读取目标配置文件
cfp.read("cfp.ini")

#为"topsecret.server.com"节添加一个"k1"键,其值为“v1”
cfp.set("topsecret.server.com","k1","v1")
#为“conf”节添加一个"k100"键,其值为"v100"
cfp.set("conf","k100","v100")

cfp.write(open("cfp.ini","w"))
print(cfp.sections())

返回结果为:

[DEFAULT]
serveraliveinterval = 45
compression = yes
compressionlevel = 9
forwardx11 = yes

[bitbucker.ort]
user = admin

[topsecret.server.com]
port = 1000345
forwardx11 = no
k1 = v1

[conf]
group = group01
k100 = v100
相关文章
相关标签/搜索