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(一)基本操作的更多相关文章

  1. python之读取配置文件模块configparser(二)参数详解

    configparser.ConfigParser参数详解 从configparser的__ini__中可以看到有如下参数: def __init__(self, defaults=None, dic ...

  2. python之读取配置文件模块configparser(三)高级使用---非标准配置文件解析

    非标准配置文件也是经常使用的,如何使用configparser来解析? 这要从configparser本身解析结构来说,configparser包含section和option,非标准配置文件只有op ...

  3. Python之配置文件模块 ConfigParser

    写项目肯定用的到配置文件,这次学习一下python中的配置文件模块 ConfigParser 安装就不说了,pip一下即可,直接来个实例 配置文件 project.conf [db] host = ' ...

  4. python 读取配置文件ini ---ConfigParser

    Python读取ini文件需要用到 ConfigParser 模块 关于ConfigParser模块的介绍详情请参照官网解释:https://docs.python.org/2.7/library/c ...

  5. python中读取配置文件ConfigParser

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

  6. Python+Selenium进行UI自动化测试项目中,常用的小技巧2:读取配置文件(configparser,.ini文件)

    在自动化测试项目中,可能会碰到一些经常使用的但 很少变化的配置信息,下面就来介绍使用configparser来读取配置信息config.ini 读取的信息(config.ini)如下: [config ...

  7. 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 ...

  8. python基础-7.3模块 configparser logging subprocess os.system shutil

    1. configparser模块 configparser用于处理特定格式的文件,其本质上是利用open来操作文件. 继承至2版本 ConfigParser,实现了更多智能特征,实现更有可预见性,新 ...

  9. python基础知识~配置文件模块

    一 配置文件模块   import ConfigParser ->导入模块  conf = ConfigParser.ConfigParser() ->初始化类二 系统函数  conf.r ...

随机推荐

  1. 558. Quad Tree Intersection

    https://leetcode.com/problems/quad-tree-intersection/description/ 我觉得是用意挺好的一题目.求两个四叉树的逻辑union,可惜测试用例 ...

  2. pyzmq学习笔记

    前言 使用过简单的python的ZMQ:server开启3个线程,client发送心跳包,如果服务端超过n秒没应答,则重新连接. 网上找的案例,server使用的zmq.device,但是一直不明白什 ...

  3. 腾讯AI开放平台的使用

    一.腾讯AI开放平台 https://ai.qq.com/ 二.腾讯AI平台支持的功能 三.签名机制 1.计算步骤 用于计算签名的参数在不同接口之间会有差异,但算法过程固定如下4个步骤. 1.将< ...

  4. LOJ#3048. 「十二省联考 2019」异或粽子 Trie

    原文链接www.cnblogs.com/zhouzhendong/p/LOJ3048.html 题解 $O(n\log^2 {a_i})$ 的做法比较简单: 1. 求出第 k 大的是什么: 二分答案, ...

  5. python 字典、列表、字符串 之间的转换

    1.列表与字符串转换 1)列表转字符串: 将列表中的内容拼接成一个字符串 将列表中的值转成字符串 2)字符串转列表: 用eval转换 将字符串每个字符转成列表中的值 将字符串按分割成列表 2.列表与字 ...

  6. hadoop ha zkfc 异常自动切换机制和hdfs 没有空间问题解决

    在我搭建hadoop ha 后,我启动了各个功能,但是发现hadoop hdfs 没法使用,在web 页面也显示hdfs 可用空间为零,并且自动备份机制无法使用,本人也不理解,然后就是指定hdfs t ...

  7. 将Redhat,CentOS,Ubuntu虚拟机的IP设为静态IP的方法

    一般在主机上创建的虚拟机默认是通过DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)网络协议来动态生成的,这样会导致你安装的虚拟机的IP地址是动态变化 ...

  8. 【安全性测试】利用反编译查看对应activity的方法采用hook技术绑定劫持_入门

    本次主要为了研究手机端的安全性而写的一篇文章,在基于自己对手机安全性的研究下,想到了这些工具之间的结合,当然这也算是第一次对手机安全研究勇敢地踏出一步,也不知道是否成功,还是准备撞南墙撞到底吧! 使用 ...

  9. js数据类型以及数组字符串常用方法

    JS判断数据类型 例子: var a = "iamstring."; var b = 222; var c= [1,2,3]; var d = new Date(); var e ...

  10. Vue中scoped css和css module比较

    scoped css 官方文档 scoped css可以直接在能跑起来的vue项目中使用. 使用方法: <style scoped> h1 { color: #f00; } </st ...