python学习之读取配置文件
作者:888米兔 发布时间:2021-05-11 11:42:20
前言:
最近在接触利用python来写测试框架,本人也是个刚接触python,所以是个小菜鸟,今天开始,一点点的记录学习中的积累,方便以后的学习以及回顾,也希望能帮助跟我一样的小菜鸟们一步步的成长起来。那么,下面就不废话了,直接进入今天的主题。
配置文件作为一种可读性很好的格式,非常适用于存储程序中的配置数据。 在每个配置文件中,配置数据会被分组(比如“config”和 “cmd”)。 每个分组在其中指定对应的各个变量值。
如下:
# 定义config分组
[config]
platformName=Android
appPackage=com.romwe
appActivity=com.romwe.SplashActivity
# 定义cmd分组
[cmd]
viewPhone=adb devices
startServer=adb start-server
stopServer=adb kill-server
# 定义log分组
[log]
log_error=true
基本的读取操作:
-read(filename) 直接读取文件内容
-sections() 得到所有的section,并以列表的形式返回
-options(section) 得到该section的所有option
-items(section) 得到该section的所有键值对
-get(section,option) 得到section中option的值,返回为string类型
-getint(section,option) 得到section中option的值,返回为int类型,还有相应的getboolean()和getfloat() 函数。
在对配置文件进行读写操作前,我们需要先进行以下两个操作:
1、实例化ConfigParser对象:
# 实例化configParser对象
cf = configparser.ConfigParser()
2、读取配置文件
# 读取config.ini文件
cf.read(config.ini)
然后进行配置文件的读取操作。
以get为例,示例代码如下:
# 定义方法,获取config分组下指定name的值
def getConfigValue(self, name):
value = self.cf.get("config", name)
return value
# 定义方法,获取cmd分组下指定name的值
def getCmdValue(self, name):
value = self.cf.get("cmd", name)
return value
通过get
(section, option)方法,可以获取指定分组下指定名称的值,其他方法类似,可参照着尝试。
基本的写入操作:
-write(fp) 将config对象写入至某个 .init 格式的文件 Write an .ini-format representation of the configuration state.
-add_section(section) 添加一个新的section
-set( section, option, value 对section中的option进行设置,需要调用write将内容写入配置文件
-remove_section(section) 删除某个 section
-remove_option(section, option)
以set(section, option, value)为例,示例代码如下:
# 定义方法,修改config分组下指定name的值value
def setConfigValue(self, name, value):
cfg = self.cf.set("config", name, value)
fp = open(r'config.ini', 'w')
cfg.write(fp)
其他方法可以自行尝试。
配置文件中的名字是不区分大小写的,如下两个是等价的:
# 不区分大小写,以下两个等价,都获取appActivity的值
self.cf.get("config", "appActivity")
self.cf.get("config", "APPACTIVITY")
在解析时,getboolean()方法查找任何可行的值,例如以下几个都是等价的:
# 以下取得的值都是等价的为ture
[log]
log_error=true
log_error=TRUE
log_error=1
log_error=yes
来源:https://my.oschina.net/u/3041656/blog/793467


猜你喜欢
- 一、准备工作1、确保jdk已安装成功,并且jdk版本选用1.7以上版本2、准备一台新的主机mysql_mycat放到master的前面做代理
- Vue 单页面应用 把公共组件放在 app.vue 但是我希望某个页面没有这些公共组件怎么办(比如登陆页面)每个页面都有 导航栏 但是我希望
- 首先是抓包,使用scapy模块,sniff()函数 在其中参数为本地文件路径时,操作为打开本地文件若参数为BPF过滤规则和回调函数,则进行S
- 微博上讨论MySQL在删除大表engine=innodb(30G+)时,如何减少MySQL hang的时间,现做一下简单总结: 当buffe
- 如下所示:import requests url='http://www.baidu.com'#下面使用requests.r
- 本文实例讲述了Python基于ThreadingTCPServer创建多线程代理的方法。分享给大家供大家参考,具体如下:#coding=ut
- Python是一门简单易学的编程语言,语法简洁而清晰,并且拥有丰富和强大的类库。与其它大多数程序设计语言使用大括号不一样 ,它使用缩进来定义
- 本文实例讲述了python二分查找算法的递归实现方法。分享给大家供大家参考,具体如下:这里先提供一段二分查找的代码:def binarySe
- httpwatch 的页面元素加载时间表里面有一堆的英文,平时也没注意看,今天瞟了一眼,觉得应该有些用处,就看了看,随便用蹩脚的英语水平翻译
- 我们通常会使用 apt-get或者是pip来安装包,但是这两者的安装路径是不一样的,区别如下:如果使用pip或者pip3安装,则第三方包在:
- 这篇文章主要介绍了python字符串替换re.sub()实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值
- 在transactional replication, 经常会遇到数据同步延迟的情况。有时候这些延迟是由于在publication中执行了一
- mark标记在实际工作中,我们要写的自动化用例会比较多,也不会都放在一个py文件中,如果有几十个py文件,上百个方法,而我们只想运行当中部分
- 用数据库的时候就会遇到有多个用户,分配用户权限的情况,有些用户只读,有些用户可以读写,有些用户只能操作一个或者多个数据库,如何给mysql的
- 1. 常用模块# 连接数据库connect()函数创建一个新的数据库连接对话并返回一个新的连接实例对象PG_CONF_123 = {
- 1. 自己写for循环从array里去掉$tmp这个元素的值<?php$tmp = '324';$arr = arra
- 运行环境:win10 64位 py 3.6 pycharm 2018.1.1导入对应的包和数据import matplotlib.pyplo
- pLSA(probabilistic Latent Semantic Analysis),概率潜在语义分析模型,是1999年Hoffman提
- 首先说说框架(Frameworks)这个词,框架就是为我们提供了一个平台一个运行环境,在如此统一的前提下我们做相关开发才能“有章可循”,要充
- datetime模块用于是date和time模块的合集,datetime有两个常量,MAXYEAR和MINYEAR,分别是9999和1.da