python读取配置文件 ConfigParser

Python 标准库的 ConfigParser 模块提供一套 API 来读取和操作配置文件。

配置文件的格式

a) 配置文件中包含一个或多个 section, 每个 section 有自己的 option;

b) section 用 [sect_name] 表示,每个option是一个键值对,使用分隔符 = 或 : 隔开;

c) 在 option 分隔符两端的空格会被忽略掉

d) 配置文件使用 # 和 ; 注释

一个简单的配置文件样例 myapp.conf

1
2
3
4
5
6
7
8
9
10
11
12
# database source
[db]
host = 127.0.0.1
port = 3306
user = root
pass = root
# ssh
[ssh]
host = 192.168.1.101
user = huey
pass = huey

 ConfigParser 的基本操作

a) 实例化 ConfigParser 并加载配置文件

1
2
cp = ConfigParser.SafeConfigParser()
cp.read('myapp.conf')

b) 获取 section 列表、option 键列表和 option 键值元组列表

1
2
3
print 'all sections:', cp.sections()        # sections: ['db', 'ssh']
print 'options of [db]:', cp.options('db')  # options of [db]: ['host', 'port', 'user', 'pass']
print 'items of [ssh]:', cp.items('ssh')    # items of [ssh]: [('host', '192.168.1.101'), ('user', 'huey'), ('pass', 'huey')]

c) 读取指定的配置信息

1
2
print 'host of db:', cp.get('db''host')     # host of db: 127.0.0.1
print 'host of ssh:', cp.get('ssh''host')   # host of ssh: 192.168.1.101

d) 按类型读取配置信息:getint、 getfloat 和 getboolean

print type(cp.getint('db', 'port'))        # <type 'int'>

e) 判断 option 是否存在

1
print cp.has_option('db''host')    # True  

f) 设置 option

1
cp.set('db''host','192.168.1.102')

g) 删除 option

1
cp.remove_option('db''host')

h) 判断 section 是否存在

print cp.has_section('db')    # True

i) 添加 section

cp.add_section('new_sect')

j) 删除 section

cp.remove_section('db')

k) 保存配置,set、 remove_option、 add_section 和 remove_section 等操作并不会修改配置文件,write 方法可以将 ConfigParser 对象的配置写到文件中

cp.write(open('myapp.conf', 'w'))
cp.write(sys.stdout)

Unicode 编码的配置

配置文件如果包含 Unicode 编码的数据,需要使用 codecs 模块以合适的编码打开配置文件。

myapp.conf

[msg]
hello = 你好

config_parser_unicode.py

import ConfigParser
import codecscp = ConfigParser.SafeConfigParser()
with codecs.open('myapp.conf', 'r', encoding='utf-8') as f:cp.readfp(f)print cp.get('msg', 'hello')

allow_no_value

通常情况下, option 是一个键值对。但是,当 SafeConfigParser 的参数 allow_no_value 设置成 True 时,它允许 option 不设置值而只是作为一个标识。

allow_no_value.conf

# option as Flag
[flag]
flag_opt

allow_no_value.py

import ConfigParsercp = ConfigParser.SafeConfigParser(allow_no_value = True)
cp.read('myapp.conf')
print cp.get('flag', 'flag_opt');    # None

allow_no_value 默认设置成 False,此时如果配置文件中存在没有设置值的 option,在读取配置文件时将抛出异常 ConfigParser.ParsingError。当 allow_no_value 设置成 True 时,如果一个 option 没有设置值,has_option 方法会返回 True,get 方法会返回 None。

DEFAULT section

如果配置文件中存在一个名为 DEFAULT 的 section,那么其他 section 会扩展它的 option 并且可以覆盖它的 option。

db.conf

[DEFAULT]
host = 127.0.0.1
port = 3306[db_root]
user = root
pass = root[db_huey]
host = 192.168.1.101
user = huey
pass = huey

default_section.py

print cp.get('db_root', 'host')    # 127.0.0.1
print cp.get('db_huey', 'host')    # 192.168.1.101

插值 Interpolation

SafeConfigParser 提供了插值的特性来结合数据。

url.conf

[DEFAULT]
url = %(protocol)s://%(server)s:%(port)s/[http]
protocol = http
server = localhost
port = 8080[ftp]
url = %(protocol)s://%(server)s/
protocol = ftp
server = 192.168.1.102

interpolation_demo.py

import ConfigParsercp = ConfigParser.SafeConfigParser()
cp.read('url.conf')print cp.get('http', 'url')    # http://localhost:8080/
print cp.get('ftp', 'url')     # ftp://192.168.1.102/

更多 ConfigParser 的使用,参考:

http://blog.csdn.net/zm2714/article/details/8002125

posted on 2017-07-12 11:40 秦瑞It行程实录 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/ruiy/p/7154616.html

python读取配置文件 ConfigParser相关推荐

  1. python读取配置文件configparser模块

    python使用自带的configparser模块用来读取配置文件,配置文件的形式类似windows中的ini文件 目录 1.新建配置文件 2.读取配置文件 3.打印读取内容 1.新建配置文件 con ...

  2. python读取配置文件-configparser

    一:首先在包目录下创建文件夹:config config下创建test.conf文件 [section1] #节点 name = tank #k = v age = 28[payload] page ...

  3. python读取配置文件存在某配置_Python读取配置文件(config.ini)以及写入配置文件

    一.读取配置文件 我的目录如下,在config下有一个config.ini配置文件 配置文件内容# 定义config分组 [config] platformName=Android appPackag ...

  4. python读取sqlserver数据库方法_SQLServer数据库之Python读取配置文件,并连接数据库SQL Server...

    本文主要向大家介绍了SQLServer数据库之Python读取配置文件,并连接数据库SQL Server,通过具体的内容向大家展现,希望对大家学习SQLServer数据库有所帮助. 用配置文件保存固定 ...

  5. python火狐配置文件_Python+Selenium中级篇之4-封装一个自己的类-浏览器引擎类/Python读取配置文件内容...

    封装一个自己的类-浏览器引擎类 前一篇文章我们知道了,如何去封装几个简单的Selenium方法到我们自定义的类,这次我们编写一个类,叫浏览器引擎类,通过更改一个字符串的值,利用if语句去判断和控制启动 ...

  6. Python 读取配置文件常用几种方式

    我们在设计自动化测试框架的时候,经常使用到配置文件,而配置文件种类有很多,常见的配置文件格式有很多中:ini.yaml.xml.properties.txt.py等. 配置文件ini 虽然配置文件放置 ...

  7. python 读取配置文件config_python中读取配置文件ConfigParser

    在程序中使用配置文件来灵活的配置一些参数是一件很常见的事情,配置文件的解析并不复杂,在python里更是如此,在官方发布的库中就包含有做这件事情的库,那就是ConfigParser,这里简单的做一些介 ...

  8. python读取配置文件并添加字典中_Python如何使用ConfigParser读取配置文件

    在项目过程中,需要设置各种IP和端口号信息等,如果每次都在源程序中更改会很麻烦(因为每次都要重启项目重新加载配置信息),因此将需要修改的参数写在配置文件(或者数据库)中,每次只需修改配置文件,就可以实 ...

  9. python读取配置文件获取所有键值对_python读取配置文件 变量 ConfigParser模块

    Python 读取写入配置文件很方便,可使用内置的 configparser 模块 配置文件:config.ini [oppo] platformName = Android platformVers ...

最新文章

  1. 怎么判断前轮左右的位置_汽车上主要传感器的安装位置,你知道多少?
  2. 单点登录Redis存储Session及SessionId问题说明与集群实战-2
  3. 用户会话,数据控件和AM池
  4. 巨额流量费其实可以避免
  5. 安装完补丁后是否需要服务器重新启动
  6. 分库分表学习总结(4)——分布式事务常见应用场景总结
  7. IOS硬件解码VTDecompressionSession失效
  8. Spring Boot/Spring面试常见问题
  9. 深度阅读----人工智能简史及其思维辩证
  10. 安卓熄屏录像_最屌免费安卓Android屏幕录像软件 (免ROOT)
  11. ORA-00932: 数据类型不一致: 应为 NUMBER, 但却获得NUMBER
  12. 米家扫地机器人尘盒怎么取_米家扫地机器人1S:从里到外全面提升 拥有超高性价比...
  13. 第 46 届 ICPC 国际大学生程序设计竞赛亚洲区域赛(沈阳)
  14. 基于互联网的项目管理——Microsoft Project Central 及其应用
  15. jquery判断是否按下Enter(回车)和TAB键
  16. 如何打造抖音爆款内容,从而快速热门涨粉丨国仁网络
  17. umi build打包之后部署报错
  18. 白鹭引擎(Egret Engine )
  19. 关机程序源代码——千万不要点运行!!!hahaha
  20. 电商数据监测全过程——采集、清洗、分析

热门文章

  1. 电子商务的安全机制及商务模式
  2. MySQL学习笔记——显示数据库信息
  3. 将某字符串切割成阵列并排序列出
  4. xstream,节点属性起别名时这样的问题你遇到过吗
  5. case when then else end
  6. java难学还是pythonnanxue_关于python:为什么numpy中的“ NaN”比“ -np.inf”更小?
  7. 百度网盘php文件怎么打开,如何通过网页版百度网盘下载大文件
  8. js中当等于最小值是让代码不执行_从浏览器多进程到JS单线程,JS运行机制最全面的一次梳理...
  9. mysql_real_connect阻塞_mysql_real_connect崩溃、未经处理的异常
  10. java按钮随机移动_java – 使按钮移动触摸我们触摸的确切位置