python笔记15-ini配置文件(configparser)

前言

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

configParser解析的配置文件的格式比较象ini的配置文件格式,就是文件中由多个section构成,每个section下又有多个配置项

ini

1.ini配置文件格式如下:

;这里是注释 [section0] key0 = value0 key1 = value1 [section1] key2 = value2 key3 = value3

2.section不能重复,里面数据通过section去查找,每个seletion下可以有多个key和vlaue的键值对,注释用英文分号(;)

configparser

1.python3里面自带configparser模块来读取ini文件

# python3 import configParser

敲黑板:python2的版本是Configparser

# python2 import ConfigParser

2.在pycharm里面,新建一个ini文件:右键New->File, 输入框直接写一个.ini后缀文件就行了,然后写数据

3.注释里面有中文的话,这里代码跟python2是有点区别的,python2里面直接conf.read(cfgpath)就可以了,python3需要加个参数:encoding=”utf-8”

敲黑板:如果ini文件里面写的是数字,读出来默认是字符串

# coding:utf-8
# 作者:上海-悠悠 # QQ群:588402570 import configparser import os curpath = os.path.dirname(os.path.realpath(__file__)) cfgpath = os.path.join(curpath, "cfg.ini") print(cfgpath)  # cfg.ini的路径 # 创建管理对象 conf = configparser.ConfigParser() # 读ini文件 conf.read(cfgpath, encoding="utf-8")  # python3 # conf.read(cfgpath)  # python2 # 获取所有的section sections = conf.sections() print(sections)  # 返回list items = conf.items('email_163') print(items)  # list里面对象是元祖

运行结果:

D:\debug_p3\cfg\cfg.ini ['email_qq', 'email_163'] [('sender', 'yoyo@163.com'), ('psw', '123456'), ('port', '465'), ('smtp_server', 'smtp.163.com'), ('receiver', 'xxx@qq.com')]

remove

1.如果想删除section中的一项,比如我想删除[email_163]下的port 这一行

# 删除一个 section中的一个 item(以键值KEY为标识) conf.remove_option('email_163', "port")

2.删除整个section这一项

conf.remove_section('email_163')

3.参考代码:

# coding:utf-8 import configparser import os # 作者:上海-悠悠 # QQ群:588402570 curpath = os.path.dirname(os.path.realpath(__file__)) cfgpath = os.path.join(curpath, "cfg.ini") print(cfgpath)  # cfg.ini的路径 # 创建管理对象 conf = configparser.ConfigParser() # 删除一个 section中的一个 item(以键值KEY为标识) conf.remove_option('email_163', "port") items = conf.items('email_163') print(items)  # list里面对象是元祖 # 删除一个 section conf.remove_section('email_163') sects = conf.sections() print(sects)  # list里面对象是元祖

运行结果:

D:\debug_p3\cfg\cfg.ini [('sender', 'yoyo@163.com'),
('psw', '123456'),
('smtp_server', 'smtp.163.com'),
('receiver', 'xxx@qq.com')] ['email_qq']

add

1.新增一个section

# 添加一个select conf.add_section("emali_tel") print(conf.sections())

2.section里面新增key和value

# 往select添加key和value conf.set("emali_tel", "sender", "yoyo1@tel.com") conf.set("emali_tel", "port", "265")

write写入

1.write写入有两种方式,一种是删除原文件内容,重新写入:w

conf.write(open(cfgpath, “w”))  # 删除原文件重新写入

另外一种是在原文件基础上继续写入内容,追加模式写入:a

conf.write(open(cfgpath, “a”))  # 追加模式写入

2.前面讲的remove和set方法并没有真正的修改ini文件内容,只有当执行conf.write()方法的时候,才会修改ini文件内容,举个例子:在ini文件上追加写入一项section内容

# coding:utf-8 import configparser import os curpath = os.path.dirname(os.path.realpath(__file__)) cfgpath = os.path.join(curpath, "cfg.ini") print(cfgpath)  # cfg.ini的路径 # 创建管理对象 conf = configparser.ConfigParser() # 添加一个select conf.add_section("emali_tel") print(conf.sections()) # 往select添加key和value conf.set("emali_tel", "sender", "yoyo1@tel.com") conf.set("emali_tel", "port", "265") items = conf.items('emali_tel') print(items)  # list里面对象是元祖 conf.write(open(cfgpath, "a"))  # 追加模式写入

运行后会发现ini文件最后新增了写入的内容了

set修改ini文件

1.比如我想把前面ini文件里面的[email_163]下的port改成”中文”
敲黑板:这里写入中文的话,需要加上写入的编码格式:encoding=”utf-8”

# coding:utf-8 import configparser import os # 作者:上海-悠悠 # QQ群:588402570 curpath = os.path.dirname(os.path.realpath(__file__)) cfgpath = os.path.join(curpath, "cfg.ini") # 创建管理对象 conf = configparser.ConfigParser() # 先读出来 conf.read(cfgpath, encoding="utf-8") # 修改section里面的值 conf.set("email_163", "port", "中文")  # 写入中文 conf.write(open(cfgpath, "r+", encoding="utf-8"))  # r+模式

火热预定!《python3.6接口自动化》5月5号开学

(0)

相关推荐

  • Python2与Python3有哪些不同之处

    众所周知,Python3是Python2的升级改进版,既包含了Python2的绝大部分内容,同时又做出了一些不一样的改变.据说,Python2将于2020年左右不再免费更新维护,作为Python2的坚 ...

  • 【YOLO学习笔记——数据集】之一YOLO数据集制作2

    目录 说在前面的话 一.准备工作 1.硬件设备 2.工具 二.数据集训练 1.图片预处理 2.训练 三.测试 说在前面的话 小编要考研,所以博客可能更新较慢,希望大家理解.但是写博客要坚持,每个月最少 ...

  • 5 分钟掌握 Python 中常见的配置文件

    为什么要写配置文件 在开发过程中,我们常常会用到一些固定参数或者是常量.对于这些较为固定且常用到的部分,往往会将其写到一个固定文件中,避免在不同的模块代码中重复出现从而保持核心代码整洁. 这个固定文件 ...

  • Python常用配置文件ini、json、yaml读写总结

    原创 吾非同 吾非同 3天前 开发项目时,为了维护一些经常需要变更的数据,比如数据库的连接信息.请求的url.测试数据等,需要将这些数据写入配置文件,将数据和代码分离,只需要修改配置文件的参数,就可以 ...

  • python笔记14-读取yaml配置文件

    yaml简介 1.yaml [ˈjæməl]: Yet Another Markup Language :另一种标记语言.yaml 是专门用来写配置文件的语言,非常简洁和强大,之前用ini也能写配置文 ...

  • 医学笔记15........白头翁尿道灼热之克星(刘仁毅)

    白头翁一药,功效清热解毒凉血,为治痢之要药,如白头翁汤就是以此药为主.历代文献均论本药治热痢,但却很少论及其它功用.近代名医冉雪峰龚姓弟子所著<医笔谈>中提出了白头翁有治尿道灼热坠痛之功效 ...

  • 完整版Python笔记|超级有用

    完整版Python笔记|超级有用

  • 【竺】性能测试笔记15——性能瓶颈分析与定位

    性能瓶颈分析与定位 性能瓶颈分析: 性能瓶颈定位顺序: 服务器硬件瓶颈-〉网络瓶颈(对局域网,可以不考虑)-〉服务器操作系统瓶颈(参数配置)-〉中间件瓶颈(参数配置,数据库,web服务器等)-〉应用瓶 ...

  • 【竺】性能测试笔记15——常用的Linux命令

    top 用来监控linux的系统状况,是常用的性能分析工具,能够实时显示系统中各个进程的资源占用情况. vmstat 用于显示虚拟内存.内核线程.磁盘.系统进程.I/O 块.中断.CPU 活动 等的统 ...

  • 缠论笔记15:教你炒股票第16课答疑精选

    快 : LZ 当前点位,更适合分散持仓还是集中持仓,资金50万左右  =============== 2006-12-14 12:28 最多不要超过 3 只.你这种资金,学好这种方法,用 30 分钟图 ...

  • 【竺】数据库笔记15——MySQL创建数据库并插入数据(二)

    一.操作简介 1.1 操作内容 本次将介绍 MySQL 新建数据库,新建表,插入数据以及基本数据类型的相关知识. 本节实验将创建一个名为 mysql_shiyan 的数据库,其中有两张表 employ ...

  • 【python笔记】python java 语法,对比学习

    【python笔记】python java 语法,对比学习

  • 胡希恕伤寒论学习笔记——15

    15.太阳病,下之后,其气上冲者,可与桂枝汤,方用前法.若不上冲者,不得与之. 这一条我跟胡老有点不同的理解.胡老解释"其气上冲",是病家感觉有气"从小腹往胸上冲&quo ...