简介:
python读写ymal文件(不需要考虑文件路径,只需要保证key名唯一)
# -*- coding: utf-8 -*-
'''
文件说明:
读取ymal文件,不需要考虑路径问题,只需要保证key名唯一
'''
import os, 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 + "/datas/logs"
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()
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):
pass
if __name__ == "__main__":
print(ReadWriteYmal().readymal("qbcr.yaml", "d01"))