python常用模块-配置文档模块(configparser)
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
ConfigParser模块用于生成和修改常见配置文档,当前模块的名称在 python 3.x 版本中变更为 configparser。类似于apache和mysql的配置文件就用这个模块生成的。
一.创建配置文件
1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ 5 #EMAIL:y1053419035@qq.com 6 7 8 """ 9 该模块适用于配置文件的格式与windows ini文件类似,可以包含一个或多个节(section),每个节可以有多个参数(键=值) 10 """ 11 12 import configparser 13 14 cfg = configparser.ConfigParser() #创建一个空字典,即“{}” 15 16 cfg["DEFAULT"] = { 17 "ServerAliveInterval" :110, 18 "Compression":"YES", 19 "CompressionLevel":15, 20 "ForwardX11":"YES", 21 } 22 23 cfg["User information"] = { 24 "USER":"Yinzhengjie", 25 } 26 27 cfg["yinzhengjie.org.cn"] = { 28 "Port":3389, 29 "ForwardX11":"no", 30 } 31 32 with open("cfg.ini","w")as f: 33 cfg.write(f)
1 [DEFAULT] 2 serveraliveinterval = 110 3 compression = YES 4 compressionlevel = 15 5 forwardx11 = YES 6 7 [User information] 8 user = Yinzhengjie 9 10 [yinzhengjie.org.cn] 11 port = 3389 12 forwardx11 = no
二.读取配置文件
1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ 5 #EMAIL:y1053419035@qq.com 6 7 import configparser 8 9 cfg = configparser.ConfigParser() 10 11 cfg.read("cfg.ini") #读取配置文件 12 13 print(cfg.sections()) #打印配置文件的字段信息,它默认是不打印“DEFAULT”的信息。 14 15 print("yinzhengjie.org.cn" in cfg) #判断cfg是否存在“yinzhengjie.org.cn”这个字段。 16 17 print(cfg["User information"]["user"]) #取"User information"字段的"user"这个key所对应的value。 18 19 print(cfg.items("yinzhengjie.org.cn")) #找到"yinzhengjie.org.cn"下所有的键值对。 20 21 print(cfg.options("yinzhengjie.org.cn")) #同for循环,找到"yinzhengjie.org.cn"下的所有键。 22 # for key in cfg["yinzhengjie.org.cn"]: 23 # print(key) 24 25 print(cfg.get("yinzhengjie.org.cn","compression")) #get方法取深层嵌套的值。 26 27 28 29 30 #以上代码执行结果如下: 31 ['User information', 'yinzhengjie.org.cn'] 32 True 33 Yinzhengjie 34 [('serveraliveinterval', '110'), ('compression', 'YES'), ('compressionlevel', '15'), ('forwardx11', 'no'), ('port', '3389')] 35 ['port', 'forwardx11', 'serveraliveinterval', 'compression', 'compressionlevel'] 36 YES
三.configparser修改和新增的实例
1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ 5 #EMAIL:y1053419035@qq.com 6 7 import configparser 8 9 cfg = configparser.ConfigParser() 10 11 cfg.read("cfg.ini",encoding="utf-8") 12 13 cfg.set("User information","Name","尹正杰") 14 cfg.set("User information","user","YINZHENGJIE") 15 16 cfg.write(open("cfg.ini","w",encoding="utf-8"))
1 [DEFAULT] 2 serveraliveinterval = 110 3 compression = YES 4 compressionlevel = 15 5 forwardx11 = YES 6 7 [User information] 8 user = YINZHENGJIE 9 name = 尹正杰 10 11 [yinzhengjie.org.cn] 12 port = 3389 13 forwardx11 = no
四.configparser删除的实例
1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ 5 #EMAIL:y1053419035@qq.com 6 7 import configparser 8 9 cfg = configparser.ConfigParser() #生成一个实例 10 11 cfg.read("cfg.ini",encoding="utf-8") #将文件内容加载进来。 12 13 cfg.remove_section("yinzhengjie.org.cn") #删除整个section! 14 15 cfg.remove_option("DEFAULT","compression") #删除某个section的一个子项, 16 17 cfg.write(open("cfg.ini","w",encoding="utf-8")) #如果有中文的话需要指定编码格式(“utf-8”)才能正常打印汉子哟!
1 [DEFAULT] 2 serveraliveinterval = 110 3 compressionlevel = 15 4 forwardx11 = YES 5 6 [User information] 7 user = YINZHENGJIE 8 name = 尹正杰