艺赛旗(RPA)Python 读写 ini 配置文件

艺赛旗 RPA8.0全新首发免费下载 点击下载
http://www.i-search.com.cn/index.html?from=line1 详细内容请参看艺赛旗官网支持栏目:RPA社区
点击链接进入http://support.i-search.com.cn/

前言
使用配置文件来灵活的配置一些参数是一件很常见的事情,配置文件的解析并不复杂,在 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 的键值对,注释用英文分号 (????
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190326141316315.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDQ0NzY4Nw==,size_16,color_FFFFFF,t_70configparser
1.python3 里面自带 configparser 模块来读取 ini 文件

python3

import configParser
注意:python2 的版本是 Configparser

python2

import ConfigParser
2. 在 pycharm 里面,新建一个 ini 文件:右键 New->File, 输入框直接写一个.ini 后缀文件就行了,然后写数据
艺赛旗(RPA)Python 读写 ini 配置文件

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

注意:如果 ini 文件里面写的是数字,读出来默认是字符串
艺赛旗(RPA)Python 读写 ini 配置文件

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()

读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’, ‘[email protected]’),
(‘psw’, ‘123456’),
(‘port’, ‘465’),
(‘smtp_server’, ‘smtp.163.com’),
(‘receiver’, ‘[email protected]’)]
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

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’, ‘[email protected]’), (‘psw’, ‘123456’), (‘smtp_serve r’, ‘smtp.163.com’), (‘receiver’, ‘[email protected]’)]
[‘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”, "[email protected]")
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”, "[email protected]")
conf.set(“emali_tel”, “port”, “265”)
items = conf.items(‘emali_tel’)
print(items) # list里面对象是元祖

conf.write(open(cfgpath, “a”)) # 追加模式写入
运行后会发现 ini 文件最后新增了写入的内容了
艺赛旗(RPA)Python 读写 ini 配置文件

set 修改 ini 文件

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

coding:utf-8

import configparser
import os

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+模式
艺赛旗(RPA)Python 读写 ini 配置文件