【转自https://my.oschina.net/u/3041656/blog/793467】

最近在接触利用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

以上就是我初次学习的一点记录,如有错误的地方,希望大家慷慨指出,我会及时改正,如果本篇对你有些帮助,希望给我点个赞哦!接下来我会继续python的学习道路,希望大家于我同行。

python学习笔记之读取配置文件【转自https://my.oschina.net/u/3041656/blog/793467】的更多相关文章

  1. SpringBoot学习笔记:读取配置文件

    SpringBoot学习笔记:读取配置文件 配置文件 在以往的项目中,我们主要通过XML文件进行框架配置,业务的相关配置会放在属性文件中,然后通过一个属性读取的工具类来读取配置信息.在SpringBo ...

  2. Python学习笔记五(读取提取写入文件)

    #Python打开读取一个文件内容,然后写入一个新的文件中,并对某些字段进行提取,写入新的字段的脚本,与大家共同学习. import os import re def get_filelist(dir ...

  3. python学习笔记(conf配置文件)

    在优化自己的框架中发现一个问题 有很多参数在很多类中都要使用.是否有什么功能可以帮助优化这些功能 这里我就想到 conf配置文件.整理了下资料 总结下内容如下 #!/usr/bin/env pytho ...

  4. Python学习笔记之读取文件、OS模块、异常处理、with as语法示例

    转:https://m.sogou.com/web/id=4c468b90-3f64-418c-acf8-990b5fe2a757/keyword=python%20os%E6%A8%A1%E5%9D ...

  5. Python学习笔记:读取Excel的xlrd模块

    一.安装xlrd 可以使用命令行安装也可使用pycharm进行安装 表示xlrd库已经安装成功,安装成功后,我们就可以导入使用了. 二.xlrd说明 (1.单元格常用的数据类型包括 0:empty(空 ...

  6. Python学习笔记之从文件中读取数据

    10-1 Python 学习笔记:在文本编辑器中新建一个文件,写几句话来总结一下你至此学到的Python 知识,其中每一行都以“In Python you can”打头.将这个文件命名为learnin ...

  7. [Python学习笔记]文件的读取写入

    文件与文件路径 路径合成 os.path.join() 在Windows上,路径中以倒斜杠作为文件夹之间的分隔符,Linux或OS X中则是正斜杠.如果想要程序正确运行于所有操作系统上,就必须要处理这 ...

  8. Python学习笔记(六)

    Python学习笔记(六) Ubuntu重置root密码 Ubuntu 16.4 目录结构 Ubuntu 命令讲解 1. Ubuntu重置root密码 启动系统,显示GRUB选择菜单(如果默认系统启动 ...

  9. OpenCV之Python学习笔记

    OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书< ...

随机推荐

  1. httpd does not appear to be running and proxying cobbler, or SELinux is in the way.

    当我们执行cobbler check时,出现这种错误:httpd does not appear to be running and proxying cobbler, or SELinux is i ...

  2. Windows7下安装python3.6.3

    官网下载即可!看清自己的电脑是32还是64! 分享一个网速慢同学可下载网址:https://pan.baidu.com/s/1kU5OCOB#list/path=%2Fpub%2Fpython 1.p ...

  3. SpringCloud使用Feign调用服务时,@FeignClient注解无法使用

    关于解决这个问题的理论根源传送门:https://blog.csdn.net/alinyua/article/details/80070890我在这里只提供解决方案 0. 结论和解决方案 Spring ...

  4. python 使用gevent模块实现手动挡切换多协程。

    from greenlet import greenlet def test1(): print(12) g2.switch()#切换到协程g2执行,保存执行状态 print(23) g2.switc ...

  5. [CF1041F Ray in the tube][数学]

    http://codeforces.com/contest/1041/problem/F 题目大意: 下边界有n个给定点,上边界有m个给定点,可以从任意一个点发出一条激光,激光碰到边界会反射 激光到达 ...

  6. 阿里java开发规范 强制约束

    http://news.51cto.com/art/201901/591018.htm  :阿里开发强制要求的11条索引创建规范,提高性能 https://blog.csdn.net/Lujunwei ...

  7. css 易错点总结

    心得:思路清晰,细致,耐心. 慢慢来,先规划,再动手,先整体后局部,规划好整个页面先. 命名合理,且小心重复 防止标签嵌套错误,以及忘记闭合 行高要在字体后面,如下: 正确:font:400 15px ...

  8. day45 jQuery

    在用js写代码时,会遇到一些问题: window.onload 事件有事件覆盖的问题,因此只能写一个事件. 代码容错性差. 浏览器兼容性问题. 书写很繁琐,代码量多. 代码很乱,各个页面到处都是. 动 ...

  9. yuan先生博客链接

    Yuan先生的博客网址   1 Web应用  https://www.cnblogs.com/yuanchenqi/articles/8869302.html 2 http协议 https://www ...

  10. MySQL 和 Oracle 在 MyBatis 使用中的区别

    MySQL 和 Oracle 在 MyBatis 使用中的区别: 区别 MySQL Oracle 存储过程的参数模式 mode 为 IN 时,是否需要指定 jdbcType 不需要:MyBatis 为 ...