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的使用的更多相关文章

  1. [转载] Python数据类型知识点全解

    [转载] Python数据类型知识点全解 1.字符串 字符串常用功能 name = 'derek' print(name.capitalize()) #首字母大写 Derek print(name.c ...

  2. [转载]Python 包管理工具

    [转载]Python 包管理工具 最近由于机缘巧合,使用各种方法安装了一些Python包,所以对Python的包管理开始感兴趣.在网上找到一篇很好的文章:https://blog.zengrong.n ...

  3. 转载--python模块

    模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才 ...

  4. 转载:python基础之模块

    作者:武沛齐 出处:http://www.cnblogs.com/wupeiqi/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接. 模块,用一 ...

  5. [转载]Python 资源大全中文版

    [转载]Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理.awesome-python 是 vinta 发起维护的 Python ...

  6. [转载]Python 元组、列表、字典、文件

    python的元组.列表.字典数据类型是很python(there python is a adjective)的数据结构.这些结构都是经过足够优化后的,所以如果使用好的话,在某些area会有很大的益 ...

  7. [转载]Python 资源大全

    原文链接:Python 资源大全 环境管理 管理 Python 版本和环境的工具 p – 非常简单的交互式 python 版本管理工具. pyenv – 简单的 Python 版本管理工具. Vex  ...

  8. [转载] python 计算字符串长度

    本文转载自: http://www.sharejs.com/codes/python/4843 python 计算字符串长度,一个中文算两个字符,先转换成utf8,然后通过计算utf8的长度和len函 ...

  9. python configparser模块

    来看一个好多软件的常见文档格式如下: [DEFAULT] ServerAliveInterval = 45 Compression = yes CompressionLevel = 9 Forward ...

随机推荐

  1. hdu 1004 Let the Balloon Rise strcmp、map、trie树

    Let the Balloon Rise Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Oth ...

  2. ResourceNotFound: rgbd_launch

    Checking log directory for disk usage. This may take awhile. Press Ctrl-C to interrupt Done checking ...

  3. PHP 手机号中间4位加密

    /** * 中间加密 字符串截取法 */ public static function encryptTel($tel) { $new_tel = substr($tel, 0, 3).'****'. ...

  4. sql语句练习-基础篇

    本文内容源自改编http://blog.csdn.net/ochangwen/article/details/51297893, 针对mysql数据库做了语法更改 个人觉得原版有些不合理之处,改了部分 ...

  5. bzoj-4870-组合dp+矩阵幂

    4870: [Shoi2017]组合数问题 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 829  Solved: 446[Submit][Statu ...

  6. 前端ps切图,图文教程,详细。

    https://blog.csdn.net/OBKoro1/article/details/69817571 1.下载 我现在使用的版本号:PS-CS6,网上很多破解版本的自行搜索下载. 2.安装好P ...

  7. 012PHP文件处理——copy rename file set_include_path

    <?php //copy rename file set_include_path /*file() 以行为单位返回数组 * */ /*$arr=file('b.txt'); foreach ( ...

  8. 007PHP文件处理—— 判断文件与操作文件fopen fread fclose is_executable is_readable is_writeable

    <?php /** * 判断文件与操作文件fopen fread fclose * is_executable is_readable is_writeable */ //判断一个文件是不是一个 ...

  9. Beta阶段第2周/共2周 Scrum立会报告+燃尽图 14

    作业要求[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2411] 版本控制:https://git.coding.net/liuyy08 ...

  10. SimpleDateFormat格式化日期以及日期的相关操作

    一.Java中的日期概述   日期在Java中是一块非常复杂的内容,对于一个日期在不同的语言国别环境中,日期的国际化,日期和时间之间的转换,日期的加减运算,日期的展示格式都是非常复杂的问题.   在J ...