python读写ymal文件(不需要考虑文件路径)

python读写ymal文件(不需要考虑文件路径),第1张

简介:
python读写ymal文件(不需要考虑文件路径,只需要保证key名唯一)

# -*- coding: utf-8 -*-
# @Time    : 2020/3/1
# @Author  : andy
'''
文件说明:
读取ymal文件,不需要考虑路径问题,只需要保证key名唯一
'''
import os
import sys
# sys.path.append("D:\ly_project\test_project\autotest\data\") # linux上需要換成左斜杠 /,win上是两个右斜杠 \
# sys.path.append(os.path.abspath(os.path.dirname(os.path.dirname(__file__)))) # 當前目錄的父目錄
import inspect
import yaml
import warnings
warnings.filterwarnings("ignore")


class ReadWriteYmal():
    def __init__(self):
        # 获取当前路径
        # self.current_path = os.getcwd()
        # 获取当前所在路径的上一级的上一级路径,不包含文件名。
        # 不一定是此ReadWriteYmal.py文件路径,如果在其他文件里(有导入ReadWriteYmal.py)运行,那么是主入口py文件路径
        # self.dir_name = os.path.abspath('..')
        # print(self.current_path)
        # print(self.dir_name)
        # 获取当前文件ReadWriteYmal.py路径+文件名
        self.current_path = inspect.getfile(inspect.currentframe())
        # 获取当前文件所在目录,相当于当前文件的父目录的父目录
        self.dir_name = os.path.dirname(os.path.dirname(self.current_path))
        # 转换为绝对路径
        self.file_abs_path = os.path.abspath(self.dir_name)
        # 拼接参数文件路径
        self.paramspath = self.dir_name + "/data" # linux上需要換成左斜杠 /,win上是两个右斜杠 \

    def readymal(self, ymalfilename, keyname):
        print("接受参数:%s %s %s" % (ymalfilename, keyname, self.paramspath))
        # 命令動態查找文件所在绝对路径+文件名
        # sysstr = "find %s -name %s" % (self.paramspath, ymalfilename) # 路径最后不需要 /
        # ymalfilepath = os.popen(sysstr).read()
        # 测试时先写死看方法是否正常
        ymalfilepath = "D:\ly_project\test_project\autotest\data\%s" % ymalfilename
        # print('查找ymal find 命令执行结果: ', ymalfilepath)
        # 读取ymal文件
        f = open('%s' % ymalfilepath.strip(), 'r', encoding='utf-8')
        x = yaml.full_load(f)
        f.close()
        return x[keyname]

    def writeymal(self, ymalfilename, keyname):
        apollo = {
            "default": "test",
            "%s" % keyname: {
                "mobile": "13911111111",
                "code": "246810",
                "status_code": 201,
                "message": "ok"
            }
        }
        ymalfilename = "D:\ly_project\test_project\autotest\data\%s" % ymalfilename
        with open(ymalfilename, "w") as f:  # 写文件
            yaml.safe_dump(data=apollo, stream=f)




if __name__ == "__main__":
    # print(ReadWriteYmal().readymal("login_data_type2.yaml", "Test_Login"))
    print(ReadWriteYmal().writeymal("login_data_type1.yaml", "login_success"))




欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/743217.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-04-29
下一篇2022-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存