博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python-ConfigParser模块【读写配置文件】
阅读量:6438 次
发布时间:2019-06-23

本文共 3968 字,大约阅读时间需要 13 分钟。

对python 读写配置文件的具体方案的介绍

1,函数介绍

 
import configParser 如果Configparser无效将导入的configParser 的C小写
 

1.1.读取配置文件

-read(filename) 直接读取ini文件内容

-sections() 得到所有的section,并以列表的形式返回

-options(section) 得到该section的所有option

-items(section) 得到该section的所有键值对

-get(section,option) 得到section中option的值,返回为string类型

-getint(section,option) 得到section中option的值,返回为int类型

 

1.2.写入配置文件

 

-add_section(section) 添加一个新的section

-set( section, option, value) 对section中的option进行设置

  需要调用write将内容写入配置文件。

 

2,测试实例

 2.1,测试1

     配置文件test.cfg

[sec_a]a_key1 = 20a_key2 = 10[sec_b]b_key1 = 121b_key2 = b_value2b_key3 = $rb_key4 = 127.0.0.1

  

   测试文件test.py

# -* - coding: UTF-8 -* -import configParser#生成config对象conf = configParser.ConfigParser()#用config对象读取配置文件conf.read("test.cfg")#以列表形式返回所有的sectionsections = conf.sections()print 'sections:', sections         #sections: ['sec_b', 'sec_a']#得到指定section的所有optionoptions = conf.options("sec_a")print 'options:', options           #options: ['a_key1', 'a_key2']#得到指定section的所有键值对kvs = conf.items("sec_a")print 'sec_a:', kvs                 #sec_a: [('a_key1', '20'), ('a_key2', '10')]#指定section,option读取值str_val = conf.get("sec_a", "a_key1")int_val = conf.getint("sec_a", "a_key2")print "value for sec_a's a_key1:", str_val   #value for sec_a's a_key1: 20print "value for sec_a's a_key2:", int_val   #value for sec_a's a_key2: 10#写配置文件#更新指定section,option的值conf.set("sec_b", "b_key3", "new-$r")#写入指定section增加新option和值conf.set("sec_b", "b_newkey", "new-value")#增加新的sectionconf.add_section('a_new_section')conf.set('a_new_section', 'new_key', 'new_value')#写回配置文件conf.write(open("test.cfg", "w"))

  

2.2,测试2

配置文件test.cfg
[info]age = 21name = chensex = male

 

测试文件test.py

from __future__ import with_statementimport configParserconfig=ConfigParser.ConfigParser()with open("test.cfg","rw") as cfgfile:    config.readfp(cfgfile)    name=config.get("info","name")    age=config.get("info","age")    print name    print age    config.set("info","sex","male")    config.set("info","age","55")    age=config.getint("info","age")    print name    print type(age)    print age

 

分析

其中[ ] 中的info是这段配置的名字。

其中age,name都是属性。

首先,config=ConfigParser.ConfigParser() 得到一个配置config对象.下面打开一个配置文件 cfgfile. 用readfp()读取这个文件.这样配置的内容就读到config对象里面了。

接下来一个问题是如何读取值.常用的方法是get() 和getint() . get()返回文本. getint()返回整数。

其次,name=config.get(''info'',''name'')  意思就是.读取config中info段中的name变量值。

最后讲讲如何设置值.使用set(段名,变量名,值) 来设置变量.config.set(''info'',''age'',''21'') 表示把info段中age变量设置为21。

 

2.3,测试3

Python的ConfigParser Module中定义了3个类对INI文件进行操作。

分别是RawConfigParser、ConfigParser、SafeConfigParser。

RawCnfigParser是最基础的INI文件读取类,ConfigParser、SafeConfigParser支持对%(value)s变量的解析。 

配置文件test.cfg

[portal]url = http://%(host)s:%(port)s/Portalhost = localhostport = 8080

  使用RawConfigParser:

import ConfigParserconf = ConfigParser.RawConfigParser()print "use RawConfigParser() read"conf.read("test.cfg")print conf.get("portal", "url")print "use RawConfigParser() write"conf.set("portal", "url2", "%(host)s:%(port)s")print conf.get("portal", "url2")

  得到输出

use RawConfigParser() readhttp://%(host)s:%(port)s/Portaluse RawConfigParser() write%(host)s:%(port)s

  改用ConfigParser

import ConfigParserconf = ConfigParser.ConfigParser()print "use RawConfigParser() read"conf.read("test.cfg")print conf.get("portal", "url")print "use RawConfigParser() write"conf.set("portal", "url2", "%(host)s:%(port)s")print conf.get("portal", "url2")

  得到输出

use RawConfigParser() readhttp://localhost:8080/Portaluse RawConfigParser() writelocalhost:8080

  改用SafeConfigParser,效果与ConfigParser相同

import ConfigParserconf = ConfigParser.SafeConfigParser()print "use RawConfigParser() read"conf.read("test.cfg")print conf.get("portal", "url")print "use RawConfigParser() write"conf.set("portal", "url2", "%(host)s:%(port)s")print conf.get("portal", "url2")

  

结论:

还是用ConfigParser

 

 
 以前不会排版,最近才学会排版,看着舒服多了
 
--------------------------------------------------------------------------------------------------------
来源:http://blog.csdn.net/gexiaobaohelloworld/article/details/7976944

 

 

 

 

 

你可能感兴趣的文章
hdu Oil Deposits
查看>>
彻底理解javascript中的this指针
查看>>
SAS去空格
查看>>
Spring Cloud构建微服务架构(二)服务消费者
查看>>
这些老外的开源技术养活了一票国产软件
查看>>
Maven实战(六)--- dependencies与dependencyManagement的区别
查看>>
创业者应该有的5个正常心态(转)
查看>>
php模式设计之 注册树模式
查看>>
【Android UI设计与开发】3.引导界面(三)实现应用程序只启动一次引导界面
查看>>
_ENV和_G
查看>>
别做操之过急的”无效将军”,做实实在在的”日拱一卒” 纵使一年不将军,不可一日不拱卒...
查看>>
Oracle Grid Infrastructure: Understanding Split-Brain Node Eviction (文档 ID 1546004.1)
查看>>
Linux改变进程优先级的nice命令
查看>>
**16.app后端如何保证通讯安全--url签名
查看>>
win32窗口机制之CreateWindow
查看>>
C/C++ 一段代码区分数组指针|指针数组|函数指针|函数指针数组
查看>>
awakeFromNib小总结
查看>>
java知识大全积累篇
查看>>
善于总结所做所学的内容
查看>>
Lua-简洁、轻量、可扩展的脚本语言
查看>>