Python模块学习 - ConfigParser
配置文件
很多软件都用到了配置文件,像git运行的时候会读取~/gitconfig,MySQL运行的时候会读取/etc/my.cnf,Python 提供的包管理工具pip命令,也会去读取~/.pip/pip.cnf文件。
配置文件的好处是,配置成功后不需要每次使用时都指定相应的参数,而且,典型的ini格式的配置文件具有和编程语言无关、可读性强和易于处理等优点、已经被广泛使用。
一个典型的配置文件包含一到多个章节(section),每个章节下包含一到多个选项(option)。下面是一个MySQL的配置文件:
[client]
port = 3306
user = mysql
password = mysql
host = 127.0.0.1 [mysqld]
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
tmpdir = /tmp
skip-external-locking
ConfigParser模块
Python中使用ConfigParser模块来解析配置文件。ConfigParser中包含一个ConfigParser类,一个ConfigParser对象可以同时解析多个配置文件,一般情况下我们只会使用ConfigParser模块解析一个文件文件。
首先,解析一个配置文件,需要先创建一个ConfigParser对象,创建ConfigParser对象时有多个参数,其中比较重要的是allow_no_value,allow_no_value默认取值为False,表示在配置文件中是否允许有没有选项的值的情况。默认情况下每个选项都应该有一个值,但是在一些特殊的应用选项下,选项存在即为真,不存在即为假,比如上面MySQL的配置文件skip-external-locking。所以如果需要解析这样的参数,那么就需要在实例化的时候添加allow_no_value 为True
>>> import ConfigParser
>>> cp = ConfigParser.ConfigParser(allow_no_value=True)
>>>
有了ConfigParser对象以后,我们就可以使用read方法,从配置文件中读取配置内容了。
>>> cp.read('/etc/my.cnf')
['/etc/my.cnf']
>>>
主要方法
ConfigParser对象中有很多方法,其中与读取配置文件,判断配置相关的方法有:
- sections:返回一个包含所有章节的列表
- has_sections:判断章节是否存在
- items:以元祖的形式返回所有的选项
- options:返回一个包含章节下所有选项的列表
- has_option:判读某个选项是否存在
- get、getboolean、getinit、getfloat:获取选项的值
下面以MySQL的配置文件my.cnf为例子
>>> cp.sections()
['mysqld', 'mysqld_safe'] >>> cp.has_section('mysqld')
True >>> cp.has_section('client')
False >>> cp.options('mysqld')
['datadir', 'socket', 'user', 'symbolic-links'] >>> cp.has_option('mysqld','user')
True >>> cp.get('mysqld','user')
'mysql'
>>>
ConfigParser对象也提供了许多方法便于我们修改配置文件:
- remove_section:删除一个章节
- add_section:添加一个章节
- remote_option:删除一个选项
- set:添加一个选项
- write:将ConfigParser对象中保存的数据保存的文件中去
>>> cp.add_section('client')
>>> cp.set('client','host','127.0.0.1')
>>> cp.set('client','user','mysql')
>>> cp.set('client','password','123456')
>>> cp.write(open('/tmp/my.cnf','w'))
>>> exit()
[root@centos-linux python]# cd /tmp
my.cnf [root@centos-linux tmp]# cat my.cnf
[mysqld]
datadir = /var/lib/mysql
socket = /var/lib/mysql/mysql.sock
user = mysql
symbolic-links = 0 [mysqld_safe]
log-error = /var/log/mysqld.log
pid-file = /var/run/mysqld/mysqld.pid [client]
host = 127.0.0.1
user = mysql
password = 123456 [root@centos-linux tmp]#
Python模块学习 - ConfigParser的更多相关文章
- 【目录】Python模块学习系列
目录:Python模块学习笔记 1.Python模块学习 - Paramiko - 主机管理 2.Python模块学习 - Fileinput - 读取文件 3.Python模块学习 - Confi ...
- 【转】Python模块学习 - fnmatch & glob
[转]Python模块学习 - fnmatch & glob 介绍 fnmatch 和 glob 模块都是用来做字符串匹配文件名的标准库. fnmatch模块 大部分情况下使用字符串匹配查找特 ...
- Python模块之: ConfigParser 配置文件读取
Python模块之: ConfigParser 配置文件读取 ConfigParser用于读写类似INI文件的配置文件,配置文件的内容可组织为组,还支持多个选项值(option-value)类型. ...
- Python模块学习filecmp文件比较
Python模块学习filecmp文件比较 filecmp模块用于比较文件及文件夹的内容,它是一个轻量级的工具,使用非常简单.python标准库还提供了difflib模块用于比较文件的内容.关于dif ...
- python 模块之-configparser
python 模块configparser 配置文件模块 import configparser config = configparser.ConfigParser() config[&q ...
- day5模块学习--configparser模块
使用ConfigParser模块读写ini文件(http://blog.csdn.net/linda1000/article/details/11729561) ConfigParserPyth ...
- python模块学习第 0000 题
将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果. 类似于图中效果: 好可爱>%<! 题目来源:https://github.com/Yixiao ...
- Python模块学习:logging 日志记录
原文出处: DarkBull 许多应用程序中都会有日志模块,用于记录系统在运行过程中的一些关键信息,以便于对系统的运行状况进行跟踪.在.NET平台中,有非常著名的第三方开源日志组件log4net ...
- 解惑Python模块学习,该如何着手操作...
Python模块 晚上和朋友聊天,说到公司要求精兵计划,全员都要有编程能力.然后C.Java.Python-对于零基础入门的,当然是选择Python的人较多了.可朋友说他只是看了简单的语法,可pyth ...
随机推荐
- Android studio出现Error:Unable to tunnel through proxy. Proxy returns "HTTP/1.1 400 Bad Request"的解决办法
最近更新了一下Android Studio(下文简写成AS),然后打开工程发现出现Error:Unable to tunnel through proxy. Proxy returns "H ...
- asp.net mvc4 使用分部视图来刷新数据库
前几天研究SSE,用浏览器做侦听后台数据库数据变化,如果有更新,就即时通过浏览器,使用SSE效果果然OK,侦听数据库有更新时马上会向浏览器通知有新数据,我还在浏览器里放了短音提示,但遇到一个问题,发出 ...
- BZOJ4754 JSOI2016独特的树叶(哈希)
判断两棵无根树是否同构只需要把重心提作根哈希即可.由于只添加了一个叶子,重心的位置几乎不发生偏移,所以直接把两棵树的重心提起来,逐层找哈希值不同且对应的两子树即可.被一个普及组子问题卡一年. #inc ...
- 关于__name__=='__main__
if __name__=='__main__' : 为了区分你是主动执行这个脚本,还是从别的地方把它当做一个模块去调用. 如果是主动执行,则执行.如果是调用的,则不执行主体. 里面存放的可能是一些测 ...
- [洛谷P1440]求m区间内的最小值
题目大意:给你n个数,求出每个数前m位的最小值 题解:单调队列,用一个可以双向弹出的队列来存一串数,满足里面的数具有单调性,我们可以假设它是单调递增的,即求最小的数.那么可以把要插入的这个数与队尾元素 ...
- Spring boot——构建rest风格
前言rest风格严格意义上说不是一种标准,而是一种风格,在如今互联网界,这个风格被广泛用于微服务系统之间的交互. REST简单介绍 REST(Representional State Transfer ...
- ZOJ3874 Permutation Graph 【分治NTT】
题目链接 ZOJ3874 题意简述: 在一个序列中,两点间如果有边,当且仅当两点为逆序对 给定一个序列的联通情况,求方案数对\(786433\)取模 题解 自己弄了一个晚上终于弄出来了 首先\(yy\ ...
- BZOJ1037 [ZJOI2008]生日聚会Party 【DP】
1037: [ZJOI2008]生日聚会Party Time Limit: 10 Sec Memory Limit: 162 MB Submit: 2800 Solved: 1654 [Submi ...
- 放弃采用Mycat的条件
Mycat::一个新颖的数据库中间件产品 设计使用Mycat时: 满足以下任意一条,请考虑放弃使用MyCat 有非分片字段查询 有分页排序 进行表JOIN操作,除非要确保两个表的关联字段具有相同的数据 ...
- webpack css压缩方案
css-loader原有的minimize选项在1.0.0版本已经移除,不能使用其进行css压缩. 目前可行的css压缩方案有: 1. postcss-loader with cssnano or u ...