原文地址:http://www.cnblogs.com/pumaboyd/archive/2008/08/11/1265416.html

红色的为标注信息

+++++++++++++++++引用+++++++++++++++++++++

>PY提供INI配置文件的操作

关于配置文件,很直观的感觉就是XML文件。对于XML文件的使用大家还是很喜欢的。但有时候只是简单的一个程序,实现一个简单的name:value关系。用XML文件就没这个必要。这种要求很符合MS的INI文件格式。所以这里主要介绍一下对INI文件的操作方式,而且最近写的第一个PY应用程序也是使用了INI
什么是INI  文件
PY所支持的INI文件还是和Windows系统所定义有不同,它不但支持name=value的形式,还支持name:value的形式

>PY对INI配置文件读取提供的类支持

PY的ConfigParser Module中定义了3个类对INI文件进行操作。分别是RawConfigParser、ConfigParser、SafeConfigParser
RawCnfigParser是最基础的INI文件读取类
ConfigParser、SafeConfigParser支持对$(value)s变量的支持。

>RawConfigParser类的使用方法 (建议使用)

int文件

[weburl]
urlname=http://pumaboyd.cnblogs.com

Test.py文件

import ConfigParser, os
from __future__ import with_statement
cfg = ConfigParser.RawConfigParser()
with open("app.ini") as fobj
    cfg.readfp( fobj)
print cfg.get("weburl","urlname") 

可以查看一下help(cfg.readfp)

readfp是读取一个 file object 类似于 something.readlines() 的对象。

使用with用法,将会节省很多内存,这里比较赞同。

>ConfigParser类的使用方法

Configration类是从RawConfigParser扩展过来的,可以支持$()s变量。
对RawConfigParserd的get(),items()进行了扩展

int文件

[DEFAULT]
val=pumaboyd
[weburl]
name=%(val)s 

Test.py文件


import ConfigParser, os
from __future__ import with_statement
cfg = ConfigParser.ConfigParser()
with open("app.ini") as fobj
    cfg.readfp( fobj)
print cfg.defaults()
print cfg.get("weburl","name") 

可以看到cfg.get("weburl","name") 输入的pumaboyd。如果这里采用的是RawConfigParser,你将看到输出的是%(val)s。
这里需要注意的一个地方就是DEFAULT这个默认节点。只能通过cfg.defaults()读取到。cfg.sections()是不包含DEFAULT这个节点的。

>SafeConfigParser类的使用方法

是从ConfigParser继承过来,其实是对RawConfigParser进行了扩展,可以支持$()s变量

int文件

[DEFAULT]
val=pumaboyd
[weburl]
name=abcd 

Test.py文件


import ConfigParser, os
from __future__ import with_statement
cfg = ConfigParser.SaftConfigParser()
with open("app.ini") as fobj
    cfg.readfp( fobj)
cfg.set("weburl","name","&(val)s")
print cfg.get("weburl","name")

你将看到输入结果是pumaboyd。如果采用的RawConfigParser,你就看到输出的是%()s

>如何修改INI文件

RawConfigParser、SafeConfigParser、ConfigParser中的SET、Remove等方法都只是对ConfigParser对象的修改,并没有真正的保存到INI文件中。所以,需要通过Write方法(3个类中都有这个方法),将修改写回INI文件中。

ini文件

[weburl]
name=abcd 

Test.py文件


import ConfigParser, os
from __future__ import with_statement
cfg = ConfigParser.ConfigParser()
with open("app.ini") as fobj
    cfg.readfp( fobj)
cfg.set("weburl","name","pumaboyd")  with open("app.ini","w") as fwobj
    cfg.write(fwobj) 

--=阅读快乐=--

欢迎访问我的新鱼塘 www.pumaboyd.com

++++++++++++++++引用结束++++++++++++++++++++

另外的一个引用。这个引用比较初级。结合tornado 的 options 来看,简单的ConfigParser 并没有将配置文件中的内容对象话,所以还需要进一步的续写。

在程序中使用配置文件来灵活的配置一些参数是一件很常见的事情,配置文件的解析并不复杂,在python里更是如此,在官方发布的库中就包含有做这件事情的库,那就是ConfigParser,这里简单的做一些介绍。
    ConfigParser解析的配置文件的格式比较象ini的配置文件格式,就是文件中由多个section构成,每个section下又有多个配置项,比如:

[db]
db_host=127.0.0.1
db_port=3306
db_user=root
db_pass=password
[concurrent]
thread=10
processor=20

假设上面的配置文件的名字为test.conf。里面包含两个section,一个是db, 另一个是concurrent, db里面还包含有4项,concurrent里面有两项。这里来做做解析:

#-*- encoding: gb2312 -*-
import ConfigParser
import string, os, sys cf = ConfigParser.ConfigParser()
cf.read("test.conf")
# 返回所有的section
s = cf.sections()
print'section:', s o = cf.options("db")
print'options:', o v = cf.items("db")
print'db:', v print'-'*60
#可以按照类型读取出来
db_host = cf.get("db", "db_host")
db_port = cf.getint("db", "db_port")
db_user = cf.get("db", "db_user")
db_pass = cf.get("db", "db_pass") # 返回的是整型的
threads = cf.getint("concurrent", "thread")
processors = cf.getint("concurrent", "processor") print"db_host:", db_host
print"db_port:", db_port
print"db_user:", db_user
print"db_pass:", db_pass print"thread:", threads
print"processor:", processors
#修改一个值,再写回去
cf.set("db", "db_pass", "zhaowei")
cf.write(open("test.conf", "w"))

python 提供INI配置文件的操作 ConfigParser的更多相关文章

  1. Python读取ini配置文件(接口自动测试必备)

    前言 大家应该接触过.ini格式的配置文件.配置文件就是把一些配置相关信息提取出去来进行单独管理,如果以后有变动只需改配置文件,无需修改代码. 特别是后续做自动化的测试,代码和数据分享,进行管理.比如 ...

  2. python读取ini配置文件的示例代码(仅供参考)

    这篇文章主要介绍了python读取ini配置文件过程示范,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 安装 pip install configp ...

  3. Python之ini配置文件详解

    INI介绍 INI是英文"初始化"(initialization)的缩写,被用来对操作系统或特定程序初始化或进行参数设置.由节(section). 键(key).值(value)构 ...

  4. Python模块:配置文件解析器configparser

    版权声明:本文为博主皮皮http://blog.csdn.net/pipisorry原创文章,未经博主同意不得转载. https://blog.csdn.net/pipisorry/article/d ...

  5. Python读取ini配置文件的方式

    python configparser模块   ConfigParser模块在python中用来读取配置文件,配置文件的格式跟windows下的ini配置文件相似,可以包含一个或多个节(section ...

  6. Python读取ini配置文件

    db_config.ini [baseconf] host=127.0.0.1 port=3306 user=root password=root db_name=evaluting_sys [con ...

  7. python读取 ini 配置文件

    在详解python读取ini文件之前,我们先说明一个ini文件的组成: 一个ini文件是由多个section组成,每个section中以key=vlaue形式存储数据: 然后我们来使用python读取 ...

  8. .net读取ini配置文件的操作

    #region 读取和写入ini文件的操作   string inipath = System.Windows.Forms.Application.StartupPath + @"\conf ...

  9. Python读取ini配置文件封装方法

    读取配置文件 ----rw_ini.py from configparser import ConfigParser def read_config(config_file_path:str): &q ...

随机推荐

  1. 发现新大陆:一个最简单的破解SSL加密网络数据包的方法

    1. 简介 相信能访问到这篇文章的同行基本上都会用过流行的网络抓包工具WireShark,用它来抓取相应的网络数据包来进行问题分析或者其他你懂的之类的事情. 一般来说,我们用WireShark来抓取包 ...

  2. 关于ios的autoLayout的一些简单介绍以及使用方法

    一.autoLayout的用途: 主要用于屏幕适配,尤其是出现了iphone6,plus之后. 二.怎么简单的用autoLayout呢? 点击左一,可以看到: 点击左二: 基本上要想autolayou ...

  3. selenium之多线程启动grid分布式测试框架封装(一)

    一.设计思路 在国内市场上,IE内核的浏览器占据了绝大部分的市场份额,那么此次框架封装将进行IE系列的浏览器进行多线程并发执行分布式测试的封装. 运行时主进程与多线程关系如下:

  4. loadrunner监控度量项及中文解释

    1. Number of Concurrent Users (NCU) 并发用户数 – 在指定时刻,系统观察到的并发用户连接数. 2. Request Per Second (RPS) 每秒处理请求数 ...

  5. OpenGL+VS2013+WIN7(64)组态

    1.下载windows在下面glut安装文件:http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip 2. 拆开发现五个文件 ...

  6. CSS学习笔记:利用border绘制三角形

    在前端的笔试.面试过程中,经常会出现一些不规则图形的CSS设置,基本上多是矩形外加一个三角形.利用CSS属性可以实现三角形的生成,主要利用上下左右的边距的折叠. 1.第一种图形: .box { wid ...

  7. [转]Mysql explain用法和性能分析

    本文转自:http://blog.csdn.net/haifu_xu/article/details/16864933  from  @幸福男孩 MySQL中EXPLAIN解释命令是显示mysql如何 ...

  8. leetcode [64] merge tow sorted lists

    之前忘记记录这题了,现在补上. 合并两个有序的list,要求是: Merge two sorted linked lists and return it as a new list. The new ...

  9. cocos2d-x的TestCpp分析

    最近,我刚开始学coco2d-x 我会写我的学习经验来 首先TestCppproject有许多例子文件夹,而在这些文件夹以外的其他文件 .我首先研究这些文件: controller.h/cpp:管理方 ...

  10. jquery调用wcf案例

    ----------根据其他网友总结 1.在契约接口上添加:[WebInvoke(RequestFormat=WebMessageFormat.Json,ResponseFormat=WebMessa ...