python之读取配置文件模块configparser(三)高级使用---非标准配置文件解析
非标准配置文件也是经常使用的,如何使用configparser来解析?
这要从configparser本身解析结构来说,configparser包含section和option,非标准配置文件只有option,那么可以人为先加上一个section最后再去掉section
思路是这样,那么就可以操作了,我们使用config.ini文件如下:
globalmd5 = functest
port = 9900
address = http://sdv.functest.com
具体转换和增删改查操作参看如下代码:
import configparser
import os filepath = os.path.join(os.getcwd(),'config.ini')
print(filepath)
sectionname = 'temp' #把普通配置文件转换为有section的文件
def trans2ini(path,sectionname):
with open(path,'r') as f:
f_temp = f.read()
with open(path,'w') as f:
f.write('[' + sectionname + ']\n' + f_temp) #转换为不带section的配置文件
def trans2normal(path):
with open(path,'r') as f:
f.readline()
f_temp = f.read()
with open(path,'w') as f:
f.write(f_temp) #查询操作
def select(filepath,configparser):
configparser.read(filepath)
for i in configparser.sections():
print('[' + i + ']')
for k,v in configparser.items(i):
print(k,'=',v) #修改操作
def update(fielpath,configparser,section,option,value):
configparser.read(filepath)
configparser.set(section,option,value)
with open(filepath,'w+') as f:
configparser.write(f) #删除option操作
def delete_option(filepath,configparser,section,option):
configparser.read(filepath)
configparser.remove_option(section,option)
with open(filepath,'w+') as f:
configparser.write(f) #删除section操作
def delete_section(filepath,configparser,section):
configparser.read(filepath)
configparser.remove_option(section)
with open(filepath,'w+') as f:
configparser.write(f) #增加操作
def insert(filepath,configparser,section,options,values):
configparser.read(filepath)
if section not in configparser.sections():
configparser.add_section(section)
for i in range(len(options)):
configparser.set(section,options[i],values[i])
with open(filepath,'w+') as f:
configparser.write(f) #转换为带section的ini文件
trans2ini(filepath,sectionname)
cp = configparser.ConfigParser()
print('查询原始文件:')
select(filepath,cp) print('修改port为8809:')
update(filepath,cp,sectionname,'port','')
select(filepath,cp) print('删除port:')
delete_option(filepath,cp,sectionname,'port')
select(filepath,cp) print('增加port:')
insert(filepath,cp,sectionname,['port'],[''])
select(filepath,cp) #操作完成后删除section
trans2normal(filepath)
以上仅作为参考,有更好思路请留言交流
python之读取配置文件模块configparser(三)高级使用---非标准配置文件解析的更多相关文章
- Python之配置文件模块 ConfigParser
写项目肯定用的到配置文件,这次学习一下python中的配置文件模块 ConfigParser 安装就不说了,pip一下即可,直接来个实例 配置文件 project.conf [db] host = ' ...
- 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基础之常用模块(三)
1.configparser模块 该模块是用来对文件进行读写操作,适用于格式与Windows ini 文件类似的文件,可以包含一个或多个节(section),每个节可以有多个参数(键值对) 配置文件的 ...
- Python学习 :常用模块(三)----- 日志记录
常用模块(三) 七.logging模块 日志中包含的信息应有正常的程序访问日志,还可能有错误.警告等信息输出 python的 logging 模块提供了标准的日志接口,你可以通过它存储各种格式的日志, ...
- python函数和常用模块(三),Day5
递归 反射 os模块 sys模块 hashlib加密模块 正则表达式 反射 python中的反射功能是由以下四个内置函数提供:hasattr.getattr.setattr.delattr,改四个函数 ...
- python之读取配置文件模块configparser(一)基本操作
configparser模块是读取类ini文件使用,其有固定的读取格式如下: [section1] option11 = value11 option12 = value12 .... [sectio ...
- python之读取配置文件模块configparser(二)参数详解
configparser.ConfigParser参数详解 从configparser的__ini__中可以看到有如下参数: def __init__(self, defaults=None, dic ...
- Python urllib和urllib2模块学习(三)
build_opener()详解: 1.urllib2.urlopen()函数不支持验证.cookie或者其它HTTP高级功能,要支持这些功能,必须使用build_opener()函数创建自定这句话的 ...
随机推荐
- macOS10.13.2配置TensorFlow
安装Python python3是通过Homebrew安装的,默认安装的是3.7.0版本,但TensorFlow目前只能在3.4,3.5,3.6上安装,因此首先需要安装3.6版本的python. 首先 ...
- selenium笔记(1)
selenium笔记(1) 一.关闭页面:1.driver.close() 关闭当前页面2.driver.quit() 退出整个浏览器 二.定位元素:1.find_element_by_id: 根据i ...
- Python 常用Web框架的比较
转载来自:https://www.cnblogs.com/sunshine-1/p/7372934.html 从GitHub中整理出的15个最受欢迎的Python开源框架.这些框架包括事件I/O,OL ...
- PhpStorm代码提示(省电模式)的设置与使用
PhpStorm中有个,Power Save Mode(省电模式),开启则代码不能自动提示,关闭则可以. 开启/关闭: 1.点击“File”菜单,最下面,Power Save Mode,勾选或取消: ...
- UOJ#416. 【APIO2018】铁人两项
原文链接www.cnblogs.com/zhouzhendong/p/UOJ416.html 前言 完了完了SB选手Tarjan写挂. 题解 考虑先Tarjan缩个点双建个圆方树. 然后发现,确定起点 ...
- java并发编程可见性与线程封闭
可见性 所谓可见性,指的是当一个线程修改了对象的状态后,其他线程能够看到该对象发生的变化.在单线程环境下,向某个变量写入值,然后在后面的操作再读取,在这个过程中该变量的值对该线程来说总是可见.但是,在 ...
- 微信小程序支付遇到的坑
1,微信公众号支付和微信小程序支付有差异 微信公众号:可以直接跳转走h5的微信支付 微信小程序:在测试环境.沙箱环境使用微信公众号的跳转支付没有问题,在线上存在支付异常 最后商讨的解决方法 openi ...
- c++继承学习
继承分类: 虚表继承 class D{ public : d(){ } ~d(){ } private: }; 单重继承 class D{ public : d(){ } ~d(){ } privat ...
- java中的异常(一)
java异常的概念 执行期的错误(javac xxx.java) 运行期的错误(java xxx) 这里讲的是运行期出现的错误 class TestEx { public static void ma ...
- 分布式、集群、微服务、SOA 之间的区别
分布式:不同模块部署在不同服务器上 作用:分布式解决网站高并发带来问题 集群:多台服务器部署相同应用构成一个集群 作用:通过负载均衡设备共同对外提供服务 SOA:Service Oriented Ar ...