学习接口测试时,当我把配置文件xx.config和读取配置文件的模块read_config.py放在项目下的同一个包config里时,只需传入文件名xx.config即可实现对配置文件的读取. 但是当我在项目下另一个包里导入read_config.py后,再次传入要读取的配置文件名xx.config,却报错了!

Traceback (most recent call last):
File "C:\Users\wangyi\AppData\Local\Programs\Python\Python36\lib\configparser.py", line 1138, in _unify_values
sectiondict = self._sections[section]
KeyError: 'MOD' During handling of the above exception, another exception occurred: Traceback (most recent call last):
File "C:/develop/lemon/tool/read_excel.py", line 88, in <module>
button = ReadConfig().read_config('case.config','MOD','button')
File "C:\develop\lemon\config\read_config.py", line 18, in read_config
return cf.get(section,option)
File "C:\Users\wangyi\AppData\Local\Programs\Python\Python36\lib\configparser.py", line 781, in get
d = self._unify_values(section, vars)
File "C:\Users\wangyi\AppData\Local\Programs\Python\Python36\lib\configparser.py", line 1141, in _unify_values
raise NoSectionError(section)
configparser.NoSectionError: No section: 'MOD'

纠结了半天,始终找不出错误原因,想去百度一下,但是心想这么简单的问题难道我都解决不了还要去百度?那岂不是太没面子了呀! 我打开酷狗,放一首古琴曲, 试着让自己静下来,但窗外马路上的汽车鸣笛声让我静不下来,  突然发现, 会不会是路径有问题?

read_config部分如下:

class ReadConfig:
def read_config(self,file_name,section,option):
cf = configparser.ConfigParser()
cf.read(file_name,encoding='utf-8')
return cf.get(section,option) if __name__ == '__main__':
r = ReadConfig().read_config('case.config','MOD','button')
print(r)

将寻找配置文件的路径改了一下,加了一行, 让你不管输入什么配置文件名都去config包里面去找:

class ReadConfig:
def read_config(self,file_name,section,option):
file = os.path.abspath(os.path.join(os.getcwd(),'..','config',file_name))
cf = configparser.ConfigParser()
cf.read(file,encoding='utf-8')
return cf.get(section,option) if __name__ == '__main__':
r = ReadConfig().read_config('case.config','MOD','button')
print(r)

大功告成, 哈

configparser读取配置文件时的相对路径问题的更多相关文章

  1. python ConfigParser读取配置文件,及解决报错(去掉BOM)ConfigParser.MissingSectionHeaderError: File contains no section headers的方法

    先说一下在读取配置文件时报错的问题--ConfigParser.MissingSectionHeaderError: File contains no section headers 问题描述: 在练 ...

  2. python读取配置文件报keyerror-文件路径不正确导致的错误

    - 在其他模块使用反射读取配置文件报错,但是在反射模块中读取GetData.check_list又是正确的 反射模块如下: # get_data.py from API_AUTO.p2p_projec ...

  3. ServletContext 接口读取配置文件要注意的路径问题

    在建立一个maven项目时,我们通常把一些文件直接放在resource下面,在ServletContext中有getResource(String path)和getResourceAsStream( ...

  4. 记一次用python 的ConfigParser读取配置文件编码报错

    记一次用python 的ConfigParser读取配置文件编码报错 ...... raise MissingSectionHeaderError(fpname, lineno, line)Confi ...

  5. ConfigParser读取配置文件时报错:ConfigParser.MissingSectionHeaderError

    使用ConfigParser来读取配置文件,经常会发现经过记事本.notepad++修改后的配置文件读取时出现下面的问题: ConfigParser.MissingSectionHeaderError ...

  6. Python读取文件时输入文件绝对路径报错

    问题描述 读取本地文件,输入绝对路径时出错,显示数据被截断. 最开始以为是转译错误,因为eclipse会自动把\变成\\, pycharm这里没有,就手动改一下.结果还是不行. 根本原因 文件名出错了 ...

  7. python3使用configparser读取配置文件

    python2中的ConfigParser在python3中改成了configparser 1.配置文件格式是 [域名] k=v 2.代码示例:需要生成conf.ini配置文件如下:[config]v ...

  8. 转载:Java项目读取配置文件时,FileNotFoundException 系统找不到指定的文件,System.getProperty("user.dir")的理解

    唉,读取个文件,也就是在项目里面去获得配置文件的目录,然后,变成文件,有事没事,总是出个 FileNotFoundException  系统找不到指定的文件,气死人啦. 还有就是:System.get ...

  9. Python利用ConfigParser读取配置文件

    http://www.2cto.com/kf/201108/100384.html #!/usr/bin/python # -*- coding:utf-8 -*- import ConfigPars ...

随机推荐

  1. Python3 pickle模块用法

    pickle(python3.x)和cPickle(python2.x的模块)相当于java的序列化和反序列化操作. 常采用下面的方式使用: import pickle pickle.dump(obj ...

  2. spring cloud学习与思考——总起篇

    接下来就spring cloud( Spring Boot 2.0版本)写一个系列,一方面加深记忆理解,做个日志,另一个方面,借这个方式跟朋友们沟通交流. 1.Spring boot是Spring的一 ...

  3. SSM框架之SpringMVC(3)常用注解

    SpringMVC(3)常用注解 1. RequestParam注解 1.作用:把请求中指定名称的参数传递给控制器中的形参赋值 2.属性: ​ 1.value:请求参数的每次 ​ 2.required ...

  4. js中关于constructor与prototype的理解

    1.①__proto__和constructor属性是对象所独有的:② prototype属性是函数所独有的,因为函数也是一种对象,所以函数也拥有__proto__和constructor属性. 2. ...

  5. IDEA新建servlet时出现的错误

    未注入Tomcat里lib文件下的jar 这样即可

  6. TCP/IP网络协议初识

    目录 一.什么是协议? 二.什么是TCP/IP协议? 三.TCP/IP为什么这么多协议? 四.TCP/IP协议为什么分层? 五.TCP/IP协议如何入门? 六.TCP/IP 的分层: 七.各协议层打包 ...

  7. javascript随机数发现的一个parseInt函数的问题

    前几天想伪造一些数据,用到了随机数,没有自己写,便在网上找了一下,找到了这篇文章:https://www.cnblogs.com/starof/p/4988516.html .之后测试了一下,发现了一 ...

  8. JVM基础回顾记录(一):JVM的内存模型

    JVM的内存模型&垃圾收集算法 JVM内存模型 JAVA程序执行的基本流程(基于HotSpot): 图1 1.程序计数器 程序计数器是一块较小的内存空间,是当前线程执行字节码的行号指示器,字节 ...

  9. openstack Glance安装与配置

    一.实验目的: 1.理解glance镜像服务在OpenStack框架中的作用 2.掌握glance服务安装的基本方法 3.掌握glance的配置基本方法 二.实验步骤: 1.在controller节点 ...

  10. 小程序--log居中 失焦获取表单中的值

    value="{{username}}" 绑定值 值在js文件的data中 pa==>Vant-Weap中表单中的值,不是双向绑定的. 你获取值后, 值并没有在对用的data ...