python读取配置文件报keyerror-文件路径不正确导致的错误
- 在其他模块使用反射读取配置文件报错,但是在反射模块中读取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-文件路径不正确导致的错误的更多相关文章
- python 读取mysql存储的文件路径下载文件,内容解析,上传七牛云,内容入es
#!/usr/bin/env python # -*- coding: utf-8 -*- import ConfigParser import json import os import re fr ...
- C# ASP JS引用路径不正确导致的错误
假设JS包放在根目录下的Scripts文件夹下 当前页的路径在另一个文件夹下,那么他引用JS应该:<script src="../Scripts/jquery-1.4.1.min.js ...
- python 读取配置文件总是报错 configparser.NoSectionError: No section:
本文为作者原创,禁止转载,违者必究法律责任!!! python 读取配置文件总是报错 configparser.NoSectionError: No section: 无论是 python2的版本,还 ...
- python读取配置文件的方式
python读取配置文件的方式 1.从config.ini中读取,后缀无所谓,文件名字也无所谓,不过config.ini是常用写法,所谓见名知意 config.ini内容: [global] ip = ...
- ServletContext 接口读取配置文件要注意的路径问题
在建立一个maven项目时,我们通常把一些文件直接放在resource下面,在ServletContext中有getResource(String path)和getResourceAsStream( ...
- python读取txt批量创建文件
python读取txt批量创建文件 pythonbatchfile 前几天有个小问题, 需要批量建立很多文件夹,, 所以手动写了个小的脚本, 后续可以直接使用 读取目录文件, 然后直接创建相应的文件 ...
- //读取配置文件(属性文件)的工具类-ConfigManager
package com.pb.news.util; import java.io.IOException;import java.io.InputStream;import java.sql.Resu ...
- python读取配置文件(ini、yaml、xml)
python读取配置文件(ini.yaml.xml)
- configparser读取配置文件时的相对路径问题
学习接口测试时,当我把配置文件xx.config和读取配置文件的模块read_config.py放在项目下的同一个包config里时,只需传入文件名xx.config即可实现对配置文件的读取. 但是当 ...
随机推荐
- python+Sqlite+Dataframe打造金融股票数据结构
5. 本地数据库 很简单的用本地Sqlite查找股票数据. DataSource类,返回的是Dataframe物件.这个Dataframe物件,在之后的业务,如计算股票指标,还需要特别处理. impo ...
- 生成随机数(Random类)和获取用户输入(Scanner类)
生成指定范围内的随机数 Math.random() 生成随机数,随机数在0到1之间,类型是 double. public class randCase { public static void mai ...
- PHP使用redis防止大并发下二次写入
php调用redis进去读写操作,大并发下会出现:读取key1,没有内容则写入内容,但是大并发下会出现同时多个php进程写入的情况,这个时候需要加一个锁,即获取锁的php进程有权限写. $lock_k ...
- 思考题:clock类编写
题目 为便于后文理解,这里先补上这份代码前文开的库以及宏定义: #include<cstdio> #include<iostream> #include<string&g ...
- 201609-1 最大波动 Java
用绝对值,后一天减去前一天即可 import java.util.Scanner; public class Main { public static void main(String[] args) ...
- 吴裕雄--天生自然Linux操作系统:Linux 云服务器
自己安装服务器还是麻烦了些,现在一般都推荐大家使用云服务器,比较方便,价格也不贵. 腾讯云 以下几款性价比非常高,有几款是需要抢购的,大家看好时间基本能拿到. 1.1核2G 99/年,可以用来学习,L ...
- 吴裕雄--天生自然 PYTHON3开发学习:运算符
#!/usr/bin/python3 a = 21 b = 10 c = 0 c = a + b print ("1 - c 的值为:", c) c = a - b print ( ...
- c# 之循环 ,while 和do---while还有for
㈠while循环 循环条件 是个bool值,为true时执行循环,为false退出循环.break一般不单独的使用,而是跟着if判断一起使用,表示,当满足某些条件的时候,就退出循环了. 循环体 一般总 ...
- ios avplayer 监控播放进度
var timeObserver = avPlayerVC.player?.addPeriodicTimeObserver(forInterval: CMTime.init(value: , ti ...
- Linux-守护进程的引入
1.进程查看命令ps (1).ps -ajx 偏向显示各种有关的ID号 (2).ps -aux 偏向显示进程各种占用资源 2.向进程发送信号指令kill (1).kill -信号编号 进程ID,向一 ...