【转载】Python ConfigParser的使用
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类型,还有相应的getboolean()和getfloat() 函数。
 
2.基本的写入配置文件
-add_section(section) 添加一个新的section
-set( section, option, value) 对section中的option进行设置,需要调用write将内容写入配置文件。
 
3.基本例子
test.conf
[sec_a] 
    a_key1 = 20 
    a_key2 = 10 
      
    [sec_b] 
    b_key1 = 121 
    b_key2 = b_value2 
    b_key3 = $r 
    b_key4 = 127.0.0.1
parse_test_conf.py
import ConfigParser 
      
    cf = ConfigParser.ConfigParser() 
      
    #read config 
    cf.read("test.conf") 
      
    # return all section 
    secs = cf.sections() 
    print 'sections:', secs 
      
    opts = cf.options("sec_a") 
    print 'options:', opts 
      
    kvs = cf.items("sec_a") 
    print 'sec_a:', kvs 
      
    #read by type 
    str_val = cf.get("sec_a", "a_key1") 
    int_val = cf.getint("sec_a", "a_key2") 
      
    print "value for sec_a's a_key1:", str_val 
    print "value for sec_a's a_key2:", int_val 
      
    #write config 
    #update value 
    cf.set("sec_b", "b_key3", "new-$r") 
    #set a new value 
    cf.set("sec_b", "b_newkey", "new-value") 
    #create a new section 
    cf.add_section('a_new_section') 
    cf.set('a_new_section', 'new_key', 'new_value') 
      
    #write back to configure file 
    cf.write(open("test.conf", "w"))
得到终端输出:
sections: ['sec_b', 'sec_a'] 
options: ['a_key1', 'a_key2'] 
sec_a: [('a_key1', "i'm value"), ('a_key2', '22')] 
value for sec_a's a_key1: i'm value 
value for sec_a's a_key2: 22
更新后的test.conf
[sec_b] 
    b_newkey = new-value 
    b_key4 = 127.0.0.1 
    b_key1 = 121 
    b_key2 = b_value2 
    b_key3 = new-$r 
      
    [sec_a] 
    a_key1 = i'm value 
    a_key2 = 22 
      
    [a_new_section] 
    new_key = new_value
4.Python的ConfigParser Module中定义了3个类对INI文件进行操作。分别是RawConfigParser、ConfigParser、SafeConfigParser。RawCnfigParser是最基础的INI文件读取类,ConfigParser、SafeConfigParser支持对%(value)s变量的解析。 
 
设定配置文件test2.conf
[portal] 
    url = http://%(host)s:%(port)s/Portal 
    host = localhost 
    port = 8080
使用RawConfigParser:
import ConfigParser 
     
    cf = ConfigParser.RawConfigParser() 
     
    print "use RawConfigParser() read" 
    cf.read("test2.conf") 
    print cf.get("portal", "url") 
     
    print "use RawConfigParser() write" 
    cf.set("portal", "url2", "%(host)s:%(port)s") 
    print cf.get("portal", "url2")
得到终端输出:
use RawConfigParser() read 
http://%(host)s:%(port)s/Portal 
use RawConfigParser() write 
%(host)s:%(port)s
改用ConfigParser:
import ConfigParser 
     
    cf = ConfigParser.ConfigParser() 
     
    print "use ConfigParser() read" 
    cf.read("test2.conf") 
    print cf.get("portal", "url") 
     
    print "use ConfigParser() write" 
    cf.set("portal", "url2", "%(host)s:%(port)s") 
    print cf.get("portal", "url2")
得到终端输出:
use ConfigParser() read 
http://localhost:8080/Portal 
use ConfigParser() write 
localhost:8080
改用SafeConfigParser:
import ConfigParser 
     
    cf = ConfigParser.SafeConfigParser() 
     
    print "use SafeConfigParser() read" 
    cf.read("test2.conf") 
    print cf.get("portal", "url") 
     
    print "use SateConfigParser() write" 
    cf.set("portal", "url2", "%(host)s:%(port)s") 
    print cf.get("portal", "url2")
得到终端输出(效果同ConfigParser):
use SafeConfigParser() read 
http://localhost:8080/Portal 
use SateConfigParser() write 
localhost:8080
【转载】Python ConfigParser的使用的更多相关文章
- [转载] Python数据类型知识点全解
		
[转载] Python数据类型知识点全解 1.字符串 字符串常用功能 name = 'derek' print(name.capitalize()) #首字母大写 Derek print(name.c ...
 - [转载]Python 包管理工具
		
[转载]Python 包管理工具 最近由于机缘巧合,使用各种方法安装了一些Python包,所以对Python的包管理开始感兴趣.在网上找到一篇很好的文章:https://blog.zengrong.n ...
 - 转载--python模块
		
模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才 ...
 - 转载:python基础之模块
		
作者:武沛齐 出处:http://www.cnblogs.com/wupeiqi/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接. 模块,用一 ...
 - [转载]Python 资源大全中文版
		
[转载]Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理.awesome-python 是 vinta 发起维护的 Python ...
 - [转载]Python 元组、列表、字典、文件
		
python的元组.列表.字典数据类型是很python(there python is a adjective)的数据结构.这些结构都是经过足够优化后的,所以如果使用好的话,在某些area会有很大的益 ...
 - [转载]Python 资源大全
		
原文链接:Python 资源大全 环境管理 管理 Python 版本和环境的工具 p – 非常简单的交互式 python 版本管理工具. pyenv – 简单的 Python 版本管理工具. Vex ...
 - [转载] python 计算字符串长度
		
本文转载自: http://www.sharejs.com/codes/python/4843 python 计算字符串长度,一个中文算两个字符,先转换成utf8,然后通过计算utf8的长度和len函 ...
 - python configparser模块
		
来看一个好多软件的常见文档格式如下: [DEFAULT] ServerAliveInterval = 45 Compression = yes CompressionLevel = 9 Forward ...
 
随机推荐
- 使用CAS实现无锁的SkipList
			
无锁 并发环境下最常用的同步手段是互斥锁和读写锁,例如pthread_mutex和pthread_readwrite_lock,常用的范式为: void ConcurrencyOperation() ...
 - python 将类属性转为字典
			
class dictObj(object): def __init__(self): self.x = 'red' self.y = 'Yellow' self.z = 'Green' def do_ ...
 - mapply
			
相比 lapply( )和 sapply( )在一个向量上迭代,mapply( )可以在多个向量上进行迭代.换句话,mapply 是 sapply 的多元版本:mapply(function(a, b ...
 - Linux下,EPM11.1.1.3 configurator 不能启动AdminServer
			
需要测试环境, 安装EPM11.1.1.3 到 CentOS 5.6 在运行configurator(/app/hyperion/common/config/9.5.0.0 时, 卡在[Startin ...
 - 3.4.1 使用过滤式扩展方法(P43-44)
			
对IEnumerable<T>执行标准并且同样返回IEnumerable<T>的扩展方法,可以使用yield关键字对源数据中的项应用选择标准,已生成精简的结果集. public ...
 - idea配置echache.xml报错Cannot resolve file 'ehcache.xsd'
			
解决方法: 打开settings->languages&frameworks->schemas and dtds ,添加地址 http://ehcache.org/ehcache. ...
 - ionic2常见问题——cordova使用Gradle构建下载maven太慢,使用阿里云镜像
			
问题描述 当我们写完ionic2项目准备打包app时(暂时介绍android) 执行命令ionic build android的时候下载maven太慢,cmd命令行工具来下载经常会出现假死状态(下载超 ...
 - 如何写入和读取从 Microsoft 消息队列在 Visual C#
			
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成.微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章.然而由机器翻译的文章并不总是完美的.它 ...
 - hdu3031
			
题解: 左偏树模板题目 每一次合并,删除最大,修改最大 都是基本操作 代码: #include<cstdio> #include<cmath> #include<algo ...
 - Can't create session svn: Unable to connect to a repository at URL “...”的解决方案
			
Can't create sessionsvn: Unable to connect to a repository at URL '...' Cannot negotiate authenticat ...