ConfigParser是Python内置的一个读取配置文件的模块,用它来读取和修改配置文件非常方便,本文介绍一下它的基本用法。

数据准备

假设当前目录下有一个名为sys.conf的配置文件,其内容如下:

[db]
db_host=127.0.0.1
db_port=22
db_user=root
db_pass=root123 [concurrent]
thread = 10
processor = 20

注:配置文件中,各个配置项其实是用等号'='隔开的键值对,这个等号两边如果有空白符,在处理的时候都会被自动去掉。但是key之前不能存在空白符,否则会报错。

配置文件介绍

配置文件即conf文件,其文件结构多为键值对的文件结构,比如上面的sys.conf文件。

conf文件有2个层次结构,[]中的文本是section的名称,下面的键值对列表是item,代表每个配置项的键和值。

初始化ConfigParser实例

import ConfigParser
cf = ConfigParser.ConfigParser()
cf.read('./sys.conf')

读取所有的section列表

section即[]中的内容。

s = cf.sections()
print '【Output】'
print s
【Output】
['db', 'concurrent']

读取指定section下options key列表

options即某个section下的每个键值对的key.

opt = cf.options('concurrent')
print '【Output】'
print opt
【Output】
['thread', 'processor']

获取指定section下的键值对字典列表

items = cf.items('concurrent')
print '【Output】'
print items
【Output】
[('thread', '10'), ('processor', '20')]

按照指定数据类型读取配置值

cf对象有get()、getint()、getboolean()、getfloat()四种方法来读取不同数据类型的配置项的值。

db_host = cf.get('db','db_host')
db_port = cf.getint('db','db_port')
thread = cf.getint('concurrent','thread') print '【Output】'
print db_host,db_port,thread
【Output】
127.0.0.1 22 10

修改某个配置项的值

比如要修改一下数据库的密码,可以这样修改:

cf.set('db','db_pass','newpass')
# 修改完了要写入才能生效
with open('sys.conf','w') as f:
cf.write(f)

添加一个section

cf.add_section('log')
cf.set('log','name','mylog.log')
cf.set('log','num',100)
cf.set('log','size',10.55)
cf.set('log','auto_save',True)
cf.set('log','info','%(bar)s is %(baz)s!') # 同样的,要写入才能生效
with open('sys.conf','w') as f:
cf.write(f)

执行上面代码后,sys.conf文件多了一个section,内容如下:

[log]
name = mylog.log
num = 100
size = 10.55
auto_save = True
info = %(bar)s is %(baz)s!

移除某个section

cf.remove_section('log')

# 同样的,要写入才能生效
with open('sys.conf','w') as f:
cf.write(f)

移除某个option

cf.remove_option('db','db_pass')

# 同样的,要写入才能生效
with open('sys.conf','w') as f:
cf.write(f)

随机推荐

  1. 嵌入式开发之davinci--- 8148/8168/8127 中的图像采集格式Sensor信号输出YUV、RGB、RAW DATA、JPEG 4种方式区别

    简单来说,YUV: luma (Y) + chroma (UV) 格式, 一般情况下sensor支持YUV422格式,即数据格式是按Y-U-Y-V次序输出的RGB: 传统的红绿蓝格式,比如RGB565 ...

  2. 2014年辛星解读css第一节

    CSS是Cascading Style Sheets的缩写.即层叠样式表,它用于表现HTML的样式,即HTML仅仅是去写该网页有哪些内容,至于怎样去表现它们,由CSS去定制. ************ ...

  3. redo

    --创建redosize的视图create or replace view redo_size as select value from v$mystat, v$statname where v$my ...

  4. Volley 的使用以及自定义Request

    Volley 的使用以及自定义Request 一.什么是 Volley 2013年Google I/O大会上推出了一个新的网络通信框架.Volley是Android平台上的网络通信库,能使网络通信更快 ...

  5. js如何去除多个cookie?

    转自:https://zhidao.baidu.com/question/211006012.html :1:设置cookie 最简单的就是:document.cookie="user=aa ...

  6. Alcor(安国)AU6387量产修复(u盘修复)

    2010年买的U盘,自从去年坏掉一直没有用. 今天试着把它修理的心态,看看能修好不能.不料真的被我搞好了. 下面是教程链接 如果你的芯片跟我的一样,我人品保证你可以成功. 如果你看教程之后量产 成功, ...

  7. Java 8 Lambda 表达式详解

    一.Java 8 Lambda 表达式了解 参考:Java 8 Lambda 表达式 | 菜鸟教程 1.1 介绍: Lambda 表达式,也可称为闭包,是推动 Java 8 发布的最重要新特性. La ...

  8. HYSBZ 3676 回文串 (回文树)

    3676: [Apio2014]回文串 Time Limit: 20 Sec  Memory Limit: 128 MB Submit: 1680  Solved: 707 [Submit][Stat ...

  9. SQL server中使用临时表存储数据

    将查询出来的数据直接用“INTO #临时表名称”的方式完成临时表的创建及数据的插入 SELECT * INTO #temp_NowStatusFROM Test SELECT * FROM #temp ...

  10. OracleUNDO

    UNDO作用 数据的回滚 一致性读 表的闪回(事务,查询的闪回....) 失败会话的恢复 数据的回滚 SQL> rollback; 回滚的过程就是从回滚段里拿到刚刚执行的这条语句产生的回滚,然后 ...