python之读取配置文件模块configparser(一)基本操作
configparser模块是读取类ini文件使用,其有固定的读取格式如下:
- [section1]
- option11 = value11
- option12 = value12
- ....
- [section2]
- option21 = value21
- option22 = value22
- ...
假如我们有一个config.ini文件结构如下:
- [IP]
- port = 8808
- address = http://sdv.functest.com
- [password]
- globalMD5 = functest
通过下面的代码来分别说明configparser的增删改查
1、查询
用下面代码来实现:
- import configparser
- import os
- filepath = os.path.join(os.getcwd(),'config.ini')
- cp = configparser.ConfigParser()
- cp.read(filepath)
- sections = cp.sections()#查询配置文件中所有section,即节点的值
- options = cp.options('IP')#查询某个section下所有的参数
- items = cp.items('IP')#查询某个section下所有的键值对
- get_port = cp.get('IP','port')#查询某个section下某个参数的值,若需要int或者float也可以直接使用geint或者getfloat或者getboolean
- get_address = cp.get('IP','address')
- get_globalMD5 = cp.get('password','globalMD5')
- print('sections:',sections)
- print('options_IP:',options)
- print('items_IP:',items)
- print('port:',get_port)
- print('address:',get_address)
- print('globalMD5:',get_globalMD5)
得到的结果如下:
- sections: ['IP', 'password']
- options_IP: ['port', 'address']
- items_IP: [('port', ''), ('address', 'http://sdv.functest.com')]
- port: 8808
- address: http://sdv.functest.com
- globalMD5: functest
这里要说明下getboolean可以获取包括yes/no,on/off,true/false,1/0等值yes,on,true和1标识True,不区分大小写
另外,获取配置文件并不一定需要get,也可以有另外一种写法,如下:
- import configparser
- import os
- filepath = os.path.join(os.getcwd(),'config.ini')
- print(filepath)
- cp = configparser.ConfigParser()
- cp.read(filepath)
- #打印section
- for sec in cp:
- print(sec)
- #打印IP中的option
- for opt in cp['IP']:
- print(opt)
- #获取globalMD5的值
- get_globalMD5 = cp['password']['globalMD5']
- print('globalMD5:',get_globalMD5)
上述代码执行结果如下:
- D:\PycharmProjects\untitled\MyTestProject\MyLearn\config.ini
- DEFAULT
- IP
- password
- port
- address
- globalMD5: functest
可以看到section中多了个DEFAULT,这个是默认section,和configparser.ConfigParser的参数default_section有关,后面会讲到
2、修改
修改主要用set来实现,代码如下:
- import configparser
- import os
- filepath = os.path.join(os.getcwd(),'config.ini')
- cp = configparser.ConfigParser()
- cp.read(filepath)
- #修改
- cp.set('IP','port','')#修改当前section中option的值,这里也可以使用cp['IP']['port'] = '9900'来写
- with open(filepath,'w+') as f:
- cp.write(f)
这个是最简单的,只要设置了对应参数的值,然后保存下即可,修改后的config.ini文件如下:
- [IP]
- port = 9900
- address = http://sdv.functest.com
- [password]
- globalmd5 = functest
和查询类似,这边set也可以类似get直接写成如下:
- import configparser
- import os
- filepath = os.path.join(os.getcwd(),'config.ini')
- print(filepath)
- cp = configparser.ConfigParser(default_section='password')
- cp.read(filepath)
- get_globalMD5_1 = cp['password']['globalMD5']
- cp['password']['globalMD5'] = 'test'
- with open(filepath,'w+') as f:
- cp.write(f)
- get_globalMD5_2 = cp['password']['globalMD5']
- print('globalMD5_1:',get_globalMD5_1)
- print('globalMD5_2:',get_globalMD5_2)
执行结果如下:
- globalMD5_1: functest
- globalMD5_2: test
3、增加
增加有两类:一是增加section,一个是增加option,都是比较简单的操作,代码实现如下:
- import configparser
- import os
- filepath = os.path.join(os.getcwd(),'config.ini')
- cp = configparser.ConfigParser()
- cp.read(filepath)
- #增加
- cp.add_section('addtest1')#增加一个section
cp.add_section('addtest2')
cp.set('addtest1','country','china')#若已经存在对应option则为修改,若不存在则为增加
cp.set('addtest1','province','jiangsu')
cp.set('addtest2','country','china')
cp.set('addtest2','province','shandong')
with open(filepath,'w+') as f:
cp.write(f)
其实也很简单set既可作修改也可以做增加使用,执行后config.ini文件如下:
- [IP]
port = 9900
address = http://sdv.functest.com- [password]
globalmd5 = functest- [addtest1]
country = china
province = jiangsu- [addtest2]
country = china
province = shandong
4、删除
删除有俩个操作,一个是删除section同时会删除section下的所有option,另外一个是删除option,代码如下:
- import configparser
- import os
- filepath = os.path.join(os.getcwd(),'config.ini')
- cp = configparser.ConfigParser()
- cp.read(filepath)
- #删除
- cp.remove_option('addtest1','province')#删除option
- cp.remove_section('addtest2')#删除section
- with open(filepath,'w+') as f:
- cp.write(f)
python就是这么简单,只要符合格式,操作就很简单,执行结果如下:
- [IP]
- port = 9900
- address = http://sdv.functest.com
- [password]
- globalmd5 = functest
- [addtest1]
- country = china
addtest2已经全部删除,addtest1中只剩下country这个option
5、判断配置文件中是否有对应的section或option
代码如下:
- import configparser
- import os
- filepath = os.path.join(os.getcwd(),'config.ini')
- cp = configparser.ConfigParser()
- cp.read(filepath)
- #判断是否存在section
- if cp.has_section('IP'):
- print('has IP section')
- else:
- print('has not IP section')
- if cp.has_section('LLL'):
- print('has LLL section')
- else:
- print('has not LLL section')
- #判断是否存在option
- if cp.has_option('IP','port'):
- print('has port option')
- else:
- print('has not port option')
- if cp.has_option('IP','url'):
- print('has url option')
- else:
- print('has not url option')
执行结果如下:
- has IP section
- has not LLL section
- has port option
- has not url option
以上结果是符合预期的
python之读取配置文件模块configparser(一)基本操作的更多相关文章
- python之读取配置文件模块configparser(二)参数详解
configparser.ConfigParser参数详解 从configparser的__ini__中可以看到有如下参数: def __init__(self, defaults=None, dic ...
- python之读取配置文件模块configparser(三)高级使用---非标准配置文件解析
非标准配置文件也是经常使用的,如何使用configparser来解析? 这要从configparser本身解析结构来说,configparser包含section和option,非标准配置文件只有op ...
- Python之配置文件模块 ConfigParser
写项目肯定用的到配置文件,这次学习一下python中的配置文件模块 ConfigParser 安装就不说了,pip一下即可,直接来个实例 配置文件 project.conf [db] host = ' ...
- python 读取配置文件ini ---ConfigParser
Python读取ini文件需要用到 ConfigParser 模块 关于ConfigParser模块的介绍详情请参照官网解释:https://docs.python.org/2.7/library/c ...
- python中读取配置文件ConfigParser
在程序中使用配置文件来灵活的配置一些参数是一件很常见的事情,配置文件的解析并不复杂,在python里更是如此,在官方发布的库中就包含有做这件事情的库,那就是ConfigParser,这里简单的做一些介 ...
- Python+Selenium进行UI自动化测试项目中,常用的小技巧2:读取配置文件(configparser,.ini文件)
在自动化测试项目中,可能会碰到一些经常使用的但 很少变化的配置信息,下面就来介绍使用configparser来读取配置信息config.ini 读取的信息(config.ini)如下: [config ...
- python day 9: xlm模块,configparser模块,shutil模块,subprocess模块,logging模块,迭代器与生成器,反射
目录 python day 9 1. xml模块 1.1 初识xml 1.2 遍历xml文档的指定节点 1.3 通过python手工创建xml文档 1.4 创建节点的两种方式 1.5 总结 2. co ...
- python基础-7.3模块 configparser logging subprocess os.system shutil
1. configparser模块 configparser用于处理特定格式的文件,其本质上是利用open来操作文件. 继承至2版本 ConfigParser,实现了更多智能特征,实现更有可预见性,新 ...
- python基础知识~配置文件模块
一 配置文件模块 import ConfigParser ->导入模块 conf = ConfigParser.ConfigParser() ->初始化类二 系统函数 conf.r ...
随机推荐
- c/c++再学习:C++中public、protect、private的访问权限控制
C++中public.protect.private的访问权限控制 访问权限 一个类的public成员变量.成员函数,可以通过类的成员函数.类的实例变量进行访问 一个类的protected成员变量.成 ...
- Emsemble
RM # -*- coding: utf-8 -*- """ RandomForestClassifier 예 """ import pan ...
- jdk1.7更新visualvm插件
所有的插件全部更新到hithub上 https://visualvm.github.io/pluginscenters.html 然后,在根据不同的JDK版本选择不同的插件地址.更改VisualVM插 ...
- SparkSQL
Spark SQL Spark SQL是Spark用来处理结构化数据的一个模块,它提供了2个编程抽象:DataFrame和DataSet,并且作为分布式SQL查询引擎的作用. Hive SQL是转换成 ...
- PBRT笔记(11)——光源
自发光灯光 至今为止,人们发明了很多光源,现在被广泛使用的有: 白炽灯的钨丝很小.电流通过灯丝时,使得灯丝升温,从而使灯丝发出电磁波,其波长的分布取决于灯丝的温度.但大部分能量都被转化为热能而不是光能 ...
- Centos7安装zabbix-agent
1.下载zabbix-agent wget https://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-agent-3.4.10 ...
- AT与ATX电源 - 1 系统状态
ATX与AT电源比较 ATX电源普遍应用在PC中,它有两套电源,一个是正常操作使用:12V,5V,3.3V和-12V,还有一个独立的5V待机电源,所谓的待机电源就是其ON的充要条件是AC输入存在,而正 ...
- jquery for循环
第一种: for(var i=0,len=$len.length; i<len; i++){//alert($len.eq(i).html());$zongshu=$zongshu+$len.e ...
- cf 744D
一开始没看懂题解,想了好久(一整天)才想明白是枚举弦上点二分半径check角度,看了下clj的代码发现思路都一样就开始写了. 借鉴了一下clj的代码. 调了一个多小时. 几个注意点:看到好多 rand ...
- vue-router的学习
一.路由的概述. vue-router是vue.js官方的路由插件,它和vue.js是深度集成的,适用于构建单页面.vue的单页面应用是基于路由和组件的,路由是用于设定访问路径,并将路径和组件映射起来 ...