详解Python读取配置文件模块ConfigParser


Posted in Python onMay 11, 2017

1,ConfigParser模块简介

假设有如下配置文件,需要在Pyhton程序中读取

$ cat config.ini
[db]
db_port = 3306
db_user = root
db_host = 127.0.0.1
db_pass = xgmtest
 
[SectionOne]
Status: Single
Name: Derek
Value: Yes
Age: 30
Single: True
 
[SectionTwo]
FavoriteColor = Green
[SectionThree]
FamilyName: Johnson
 
[Others]
Route: 66

如何在Python中读取呢

>>> import ConfigParser
>>> Config = ConfigParser.ConfigParser()
>>> Config
<ConfigParser.ConfigParser instance at 0x00BA9B20>
>>> Config.read("config.ini")
['config.ini']
>>> Config.sections()
['db', 'Others', 'SectionThree', 'SectionOne', 'SectionTwo']
>>> Config.get("db", "db_host")
'127.0.0.1'
>>> Config.getint("db", "db_port")
3306

2,ConfigParser模块的基本方法介绍

读取配置文件

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() 函数

写入配置文件

add_section(section) 添加一个新的section
set(section, option, value) 对section中的option进行设置,需要调用write将内容写入配置文件

3,特殊情况

如果有以下配置文件

[zone1]
192.168.10.13
192.168.10.15
192.168.10.16
192.168.10.17
[zone2]
192.168.11.13
192.168.11.14
192.168.11.15
[zone3]
192.168.12.13
192.168.12.14
192.168.12.15

这种配置文件,每一个section里面,并不是健值对的形式,此时再调用ConfigParser读取便会报出如下错误:

ConfigParser.ParsingError: File contains parsing errors: hosts.txt

所以正确的调用方法为:

#!/usr/bin/python
 
import ConfigParser
 
config = ConfigParser.ConfigParser(allow_no_value=True)
config.read("hosts.txt")
print config.items("zone2")

运行结果:

$ ./a.py 
[('10.189.22.21', None), ('10.189.22.22', None), ('10.189.22.23', None)]

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在 Django/Flask 开发服务器上使用 HTTPS
Jul 03 Python
Python计算已经过去多少个周末的方法
Jul 25 Python
windows上安装Anaconda和python的教程详解
Mar 28 Python
Pycharm学习教程(4) Python解释器的相关配置
May 03 Python
使用XML库的方式,实现RPC通信的方法(推荐)
Jun 14 Python
Python中字典(dict)合并的四种方法总结
Aug 10 Python
Python中顺序表原理与实现方法详解
Dec 03 Python
python 浅谈serial与stm32通信的编码问题
Dec 18 Python
Python基础之变量基本用法与进阶详解
Jan 03 Python
linux 下selenium chrome使用详解
Apr 02 Python
python解决OpenCV在读取显示图片的时候闪退的问题
Feb 23 Python
opencv读取视频并保存图像的方法
Jun 04 Python
python如何获取服务器硬件信息
May 11 #Python
浅谈Python基础之I/O模型
May 11 #Python
老生常谈Python进阶之装饰器
May 11 #Python
python 第三方库的安装及pip的使用详解
May 11 #Python
插入排序_Python与PHP的实现版(推荐)
May 11 #Python
Python实现计算两个时间之间相差天数的方法
May 10 #Python
Python开发的实用计算器完整实例
May 10 #Python
You might like
《逃离塔科夫》——“萌新劝退,老手自嗨”的硬核FPS游戏
2020/04/03 其他游戏
php中ob_get_length缓冲与获取缓冲长度实例
2014/11/20 PHP
PHP SPL标准库之SplFixedArray使用实例
2015/05/12 PHP
PHP超全局数组(Superglobals)介绍
2015/07/01 PHP
iis 7下安装laravel 5.4环境的方法教程
2017/06/14 PHP
老生常谈PHP中的数据结构:DS扩展
2017/07/17 PHP
smarty模板的使用方法实例分析
2019/09/18 PHP
Extjs学习笔记之四 工具栏和菜单
2010/01/07 Javascript
页面只能打开一次Cooike如何实现
2012/12/04 Javascript
jquery 表格的增行删行实现思路
2013/03/21 Javascript
解决自定义$(id)的方法与jquery选择器$冲突的问题
2014/06/14 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(二)
2015/12/10 Javascript
jQuery实现本地预览上传图片功能
2016/01/08 Javascript
Seajs 简易文档 提供简单、极致的模块化开发体验
2016/04/13 Javascript
详解Vue方法与事件
2017/03/09 Javascript
JavaScript对象引用与赋值实例详解
2017/03/15 Javascript
JS简单判断滚动条的滚动方向实现方法
2017/04/28 Javascript
简单谈谈关于Angular Cli打包的事
2017/09/05 Javascript
vue-resource拦截器设置头信息的实例
2017/10/27 Javascript
jQuery创建及操作xml格式数据示例
2018/05/26 jQuery
基于Vue2实现简易的省市区县三级联动组件效果
2018/11/05 Javascript
[03:05]《我与DAC》之xiao8:DAC与BG
2018/03/27 DOTA
状态机的概念和在Python下使用状态机的教程
2015/04/11 Python
python如何对实例属性进行类型检查
2018/03/20 Python
Django实现学生管理系统
2019/02/26 Python
PyQt5实现简易电子词典
2019/06/25 Python
Python数据处理篇之Sympy系列(五)---解方程
2019/10/12 Python
Python搭建代理IP池实现获取IP的方法
2019/10/27 Python
Python numpy数组转置与轴变换
2019/11/15 Python
基于Python批量生成指定尺寸缩略图代码实例
2019/11/20 Python
Python实现自动签到脚本的示例代码
2020/08/19 Python
2014年党员公开承诺书范文
2014/03/28 职场文书
欢度春节标语
2014/07/01 职场文书
2015年药店工作总结
2015/04/20 职场文书
netty 实现tomcat的示例代码
2022/06/05 Servers
nginx之queue的具体使用
2022/06/28 Servers