多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] ## 模块说明 ### 作用 configparser模块用于生成和修改常见配置文档,下面是一个常见的cnf格式配置文件,就可以用本模块生成或读取 ### 常见配置文件格式 kv格式支持两种语法,等号或冒号,如a=1或a:1 ```cnf [DEFAULT] user=mysql [mysqld] server-id=11 port=3306 [dev] home=/home/ user=dev [pro] home=/data/ ``` 如上的配置文件,使用configparser模块读取时,会将每一个中括号就是一个key,但默认不会显示**DEFAULT**块中的内容,即只显示[mysqld,dev,pro], 但**DEFAULT**块中的内容会加入到每一个key中(前提是当前key中没有该内容) ### 模块功能列表 * read(filename) 读取配置文件,直接读取ini文件内容 * sections() 获取ini文件内所有的section,以列表形式返回['logging', 'mysql'] * options(sections) 获取指定sections下所有options ,以列表形式返回['host', 'port', 'user', 'password'] * items(sections) 获取指定section下所有的键值对,[('host', '127.0.0.1'), ('port', '3306'), ('user', 'root'), ('password', '123456')] * get(section, option) 获取section中option的值,返回为string类型 * getint(section,option) 返回int类型 * getfloat(section, option) 返回float类型 * getboolean(section,option) 返回boolen类型 ## 模块演示 ### 模块导入 由于本模块名较长,一般都通过生成对象的方式引用 ```python >>> import configparser >>> cf = configparser.ConfigParser() ``` ### 读取配置 ``` >>> cf.read('test.ini') ['test.ini'] >>> cf.sections() ['mysqld', 'dev', 'pro'] ``` >注意读取出来的sections中,不包含DEFAULT块 ### 获取key和值 常用的方法是`options`、 `ge`、`items` ``` >>> cf.options('pro') ['home', 'user'] >>> cf.get('dev','user') 'dev_user' >>> for key in cf['pro']:print(key) #for循环也可以 ... home use >>> cf.items('pro') #获取kv键值对 [('user', 'mysql'), ('home', '/data/') >>> cf.items('dev') [('user', 'dev_user'), ('home', '/home/')] >>> cf['pro']['user'] #通过下标的形式取值 'mysql' ``` >注意由于pro块中是没有`user`的,所以获取了`DEFAULT`中的`user`,但`dev`中自己就有`user`,获取的就是自己的`user` ### 判断key是否存在 ``` >>> 'dev' in cf True >>> 'devs' in cf False ``` ### 删除配置 * 删除值 ``` >>> cf.options('pro') ['home', 'user'] >>> cf.remove_option('pro','user') False #错误原因是因为user是从DEFAULT中继承而来的 >>> cf.remove_option('pro','home') True ``` * 删除key ``` >>> cf.sections() ['mysqld', 'dev', 'pro'] >>> cf.remove_section('pro') True >>> cf.sections() ['mysqld', 'dev'] ``` ### 增加配置 ``` >>> cf.sections() ['mysqld', 'dev'] >>> cf.has_section('pro') False >>> cf.add_section('pro') >>> cf.sections() ['mysqld', 'dev', 'pro' >>> cf.set('pro','name','root') >>> cf.get('pro','name') 'root' ``` ### 修改配置 ``` >>> cf.get('dev','user') 'dev_user' >>> cf.set('dev','user','nginx') >>> cf.get('dev','user') 'nginx' ``` ### 将修改回写到配置文件 ``` cf.write(open('test.ini','w')) ```