今天我们来学习一下configparser这个模块,这个模块主要用来操作配置文件的,我们下面先简单的看下这个模块的用法
一、增加内容
import configparser config = configparser.ConfigParser() config["DEFAULT"] = {"servername":"hci", "ip_address":"127.0.0.1", "port":"3260", "address":"sangfor"} config["vmware"] = {"servername":"vmware", "ip_address":"127.0.0.2", "port":"3261", "address":"usa"} config["nutanix"] = {"servername":"nutanix", "ip_address":"127.0.0.3", "port":"3262"} config.write(open("config.ini","w"))
然后我们查看下配置中的内容,是不是很整洁漂亮
这里的“DEFAULT”、“vmware”、”nutanix“都是section,而section中的每一项,比如servername为option
2、如果我们想对配置文件修改,我们该怎么办呢?
先说下如何增加
config.read("config.ini") config["DEFAULT"] = {"address":"sangfor"} config.write(open("config.ini","w"))
得到的效果是,将配置文件中的DEFAULT中的所有的option覆盖,然后替换为代码中的一条,我们可以看下此时的配置文件中的内容
所以我们如果要增加一条option,应该是按照下面的方法来增加,代码如下
config["DEFAULT"]["address"] = "sangfor" # # 体会下这两种写法的区别 config["DEFAULT"]["servername"] = "hci" config.write(open("config.ini","w"))
最终得到的配置文件的内容如下
同时也可以对某一个option的值进行更改
config.read("config.ini") config["DEFAULT"]["servername"] = "SDDC" config.write(open("config.ini","w"))
得到的配置截图如下,可以看到servername的值从hci被修改为sddc
下面我们说下如何查看配置文件
首先查看配置文件的中的section
print(config.sections()) config.read("config.ini") print(config.sections())
结果如下,这里默认不会输出DEFAULT的section的,DEFAULT是非常特殊的存在,我们在后面会特别说明
查看option,先看下如何查看DEFAULT中的option
config.read("config.ini") print(config.defaults())
结果如下
在看下如何查看其他section的option
config.read("config.ini") print(config.options("vmware")) #查看vmware的section的option的key值 print(config.items("vmware")) #查看vmware的section的option的key和value值 # print(config["nutanix"]["servername"]) #查看nutanix的servername的value的值
输出结果如下
3、在来看下如何删除
先看如何删除section
config.read("config.ini") config.remove_section("nutanix") config.write(open("config.ini","w"))
看下配置文件的截图,我们可以看到nutanix的section已经被删除
然后看下如何删除option
config.read("config.ini") config.remove_option("vmware","address") config.write(open("config.ini","w"))
在看配置文件的截图,可以看到vmware的address已经被删除
4、我们可以判断配置文件中是否有某个section、后者某个section中是否有某个option
先看下如何判断配置文件中是否有某个section
print(config.has_section("nutanix")) print(config.has_section("vmware"))
输出结果如下
在看下如何判断某个section是否有指定的option
config.read("config.ini") print(config.has_option("vmware","port")) print(config.has_option("vmware","aaa")) print(config.has_option("vmware","address"))
结果如下
我们来看下配置文件中的内容,这里我们需要简单的解释一下,我们可以看到vmware中有port,这里显示为true,没有问题;我们看到vmware没有aaa,这里为false,没有问题;但是我们看到vmware中并没有address,为什么这里显示为true呢?其实这里就是DEFAULT这个section起作用了,如果在非DFAULT中没有某一项,而该项在DEFAULT中有,则默认会用DEFAULT中的option。
5、还有2个方法,可以更改配置文件,我们在来看下
首先可以增加secton、为某个section添加option、修改某个option的值
config.read("config.ini") config.add_section("nutanix") config.write(open("config.ini","w")) config.set("nutanix","servername","nutanix") config.write(open("config.ini","w")) config.set("vmware","port","8000") config.write(open("config.ini","w"))
执行的结果如下