- 在其他模块使用反射读取配置文件报错,但是在反射模块中读取GetData.check_list又是正确的

反射模块如下:

# get_data.py

from API_AUTO.p2p_project_7.tools import project_path
import pandas as pd
from API_AUTO.p2p_project_7.tools.read_config import ReadConfig class GetData:
Cookie = None
LoanId = None
check_list = eval(ReadConfig.get_config(project_path.case_config_path, "CHECK_LEAVE_AMOUNT", "check_list"))
AddTel = pd.read_excel(project_path.test_case_path, sheet_name="init").iloc[0, 0]
NormalTel = pd.read_excel(project_path.test_case_path, sheet_name="init").iloc[1, 0]
AdminTel = pd.read_excel(project_path.test_case_path, sheet_name="init").iloc[2, 0]
LoanMemberId = pd.read_excel(project_path.test_case_path, sheet_name="init").iloc[3, 0]
MemberID = pd.read_excel(project_path.test_case_path, sheet_name="init").iloc[4, 0] print(GetData.AdminTel)
print(GetData.check_list) # df = pd.read_excel(project_path.test_case_path, sheet_name="phone")
# print(df.iloc[0, 0]) # 获取phone表单中的A1单元格的值

- 方法1:不使用反射,直接导入读取配置文件模块,直接读取

import configparser

"""
通过读取配置文件,来执行相应的测试用例
配置文件分为2个部分
第一部分:[SECTION],必须使用[]
第二部分:option=value 键值对形式存储
""" cf = configparser.ConfigParser()
# 打开配置文件,传入文件名和编码格式
cf.read("case.config", encoding="utf-8") # 方法1取值
# 读取配置文件的数据,传入section和option的值
# res_1 = cf.get("MODE", "mode")
# print(res_1) # 方法2取值,类似字典
# res_2 = cf["MODE"]["mode"]
# print(res_2) # 读取所有SECTION,结果是列表
# print(cf.sections(), type(cf.sections())) # 读取某一分区下的数据,结果是列表,section中的键值对放在了元组中
# print(cf.items("DREAM")) # 配置文件中的value,无论是数字还是列表或其他类型,读取出来后都是字符串类型
# 通过eval去掉引号,转换为原来的数据
age = cf.get("PERSON", "age")
print(age, type(age)) name = cf["PERSON"]["name"]
print(name, type(name)) favorite = cf.get("PERSON", "favorite")
print(favorite, type(favorite))

  

- 结果:仍然报错,原因是执行了引用模块中的代码, 在引用模块中的print(Get.check_list)语句, 在这里执行了所以报错

A模块中有print语句a【a没有放在main下面】,B调用A时,也会执行a, 或者B只是引用了A模块,并没有调用其中的函数,也会执行a

 

- 将上述代码注释掉就可以正常执行了

方法2:找到出错原因,进行修改

使用反射出错的原因是反射中有读取配置文件的代码,读取配置文件时要有文件的路径,在project_path中读取目录时没有使用绝对路径导致在其他模块引用反射时出错了,改成通过 os.path.split(os.path.split(os.path.realpath(__file__))[0])[0]   获取路径就OK了

python读取配置文件报keyerror-文件路径不正确导致的错误的更多相关文章

  1. python 读取mysql存储的文件路径下载文件,内容解析,上传七牛云,内容入es

    #!/usr/bin/env python # -*- coding: utf-8 -*- import ConfigParser import json import os import re fr ...

  2. C# ASP JS引用路径不正确导致的错误

    假设JS包放在根目录下的Scripts文件夹下 当前页的路径在另一个文件夹下,那么他引用JS应该:<script src="../Scripts/jquery-1.4.1.min.js ...

  3. python 读取配置文件总是报错 configparser.NoSectionError: No section:

    本文为作者原创,禁止转载,违者必究法律责任!!! python 读取配置文件总是报错 configparser.NoSectionError: No section: 无论是 python2的版本,还 ...

  4. python读取配置文件的方式

    python读取配置文件的方式 1.从config.ini中读取,后缀无所谓,文件名字也无所谓,不过config.ini是常用写法,所谓见名知意 config.ini内容: [global] ip = ...

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

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

  6. python读取txt批量创建文件

    python读取txt批量创建文件 pythonbatchfile 前几天有个小问题, 需要批量建立很多文件夹,, 所以手动写了个小的脚本, 后续可以直接使用 读取目录文件, 然后直接创建相应的文件 ...

  7. //读取配置文件(属性文件)的工具类-ConfigManager

    package com.pb.news.util; import java.io.IOException;import java.io.InputStream;import java.sql.Resu ...

  8. python读取配置文件(ini、yaml、xml)

    python读取配置文件(ini.yaml.xml)  

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

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

随机推荐

  1. RTMP、RTSP

    一.参考网址 1.RTMP.RTSP.HTTP视频协议详解(附:直播流地址.播放软件) 2.海康RTSP流转RTMP并推送至WEB端展示 3.使用FFmpeg将rtsp流摄像头视频转码为rtmp播放 ...

  2. 基于Token的身份验证

    最近了解下基于 Token 的身份验证,跟大伙分享下.很多大型网站也都在用,比如 Facebook,Twitter,Google+,Github 等等,比起传统的身份验证方法,Token 扩展性更强, ...

  3. 【PXC】关于限流的参数,状态值说明

    一.什么是流控(FC)?如何工作? 节点接收写集并把它们按照全局顺序组织起来,节点将接收到的未应用和提交的事务保存在接收队列中,当这个接收队列达到一定的大小,将触发限流:此时节点将暂停复制,节点会先处 ...

  4. Python模块——json

    简介 json全名是JavaScript Object Notation(即:Javascript对象标记).它是JavaScript的子集,JSON是轻量级的文本数据交换格式.前端和后端进行数据交互 ...

  5. sol - 0x60,61,62

    [例题]走廊泼水节 设当前扫描到边x,y,长度为z,x所处的并查集为Sx,y所处的并查集为Sy: 对于任意u属于Sx,v属于Sy,我们可以知道u,v之间必连一条边 但是我们要在保证x,y之间的边属于唯 ...

  6. 编译Python文件

    编译Python文件 一.编译Python文件 为了提高加载模块的速度,强调强调强调:提高的是加载速度而绝非运行速度.python解释器会在__pycache__目录中下缓存每个模块编译后的版本,格式 ...

  7. Ubuntu16装Flash

    第一种方法: 1)下载flash的tar.gz压缩包.(以·tar.gz为后缀的文件是一种压缩文件,在Linux和macOS下常见,Linux和macOS都可以直接解压使用这种压缩文件) https: ...

  8. linux上systemctl使用

    转载:https://www.cnblogs.com/zdz8207/p/linux-systemctl.html Linux服务器,服务管理--systemctl命令详解,设置开机自启动 syete ...

  9. debian8.8安装sougou输入法

    传送门:http://www.cnblogs.com/ligongzi/p/6137601.html 亲测可用

  10. Python文件基本操作及上下文管理

    文件基本操作 打开文件:f = open(fole_name,mode = 'r'),传入表示文件路径的字符串,会返回一个文件对象,mode是文件打开模式. 关闭文件:f.close(),调用给定文件 ...