• configparser读取配置文件时的相对路径问题


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

    Traceback (most recent call last):
      File "C:UserswangyiAppDataLocalProgramsPythonPython36libconfigparser.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:developlemonconfig
    ead_config.py", line 18, in read_config
        return cf.get(section,option)
      File "C:UserswangyiAppDataLocalProgramsPythonPython36libconfigparser.py", line 781, in get
        d = self._unify_values(section, vars)
      File "C:UserswangyiAppDataLocalProgramsPythonPython36libconfigparser.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)

    大功告成, 哈

  • 相关阅读:
    刷新SqlServer数据库中所有的视图
    代码的阅读
    unity3d的模型规范
    XOCDE5开发
    unity3d自动寻路教程
    u3d性能优化
    U3D层的运用
    关于unity3d插件的自动打包
    unity3d各平台通讯原生的平台API的说明
    uniSWF使用注意事项
  • 原文地址:https://www.cnblogs.com/wangyi0419/p/11253929.html
Copyright © 2020-2023  润新知