首页 > 编程语言 >python yaml 配置文件的使用

python yaml 配置文件的使用

时间:2023-04-27 10:22:39浏览次数:42  
标签:name 配置文件 python self yaml ._ path dump

yaml介绍

yaml的英文名称是Yet Another Markup Language,直译过来就是标记语言。
yaml用的比较多的地方就是写配置文件,比如yaml配置文件在Kubernetes用的就非常广泛,学Kubernetes必须要先学yaml文件格式。

yaml的基本语法:

  • 大小写敏感
  • 使用缩进表示层级关系
  • 缩进时不允许使用Tab键,只允许使用空格。
  • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
  • ‘#’表示注释,从这个字符一直到行尾,都会被解析器忽略,这个和python的注释一样

数据类型

  • 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary),对象的一组键值对,使用冒号结构表示。

      - code: name 
        name: name 
        data_type: varchar 
        field_type: varchar(100)
    

    hash: { name: Steve, foo: bar }
    
  • 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list),是由一组连词线(-)开头的行

    values: 
      - 启用 
      - 停用
    

    animal: [Cat, Dog]
    
  • 纯量(scalars):单个的、不可再分的值,如字符串、布尔值、整数等

加载和保存yaml

  • 加载:
    函数yaml.load将一个YAML文档转换为一个Python对象。
    yaml.load接受一个字节字符串、一个Unicode字符串、一个开放的二进制文件对象或一个开放的文本文件对象。
    字节串或文件必须使用utf-8、utf-16-be或utf-16-le编码。

    yaml.load(""" 
      - Hesperiidae 
      - Papilionidae 
      - Apatelodidae 
      - Epiplemidae 
    """) 
    ['Hesperiidae', 'Papilionidae', 'Apatelodidae', 'Epiplemidae']
    
  • 保存
    yaml.dump函数接受一个Python对象并生成一个YAML文档。

      print(yaml.dump({'name': 'Silenthand Olleander', 'race': 'Human', 'traits': ['ONE_HAND', 'ONE_EYE']})) 
      name: Silenthand Olleander 
      race: Human 
      traits: [ONE_HAND, ONE_EYE]
    
  • 注意
    yaml.dump接受第二个可选参数,它必须是一个打开的文本或二进制文件。
    在这种情况下,yaml.dump将把产生的YAML文档写入文件中。否则,yaml.dump将返回生成的文档。
      stream = file('document.yaml', 'w') 
      yaml.dump(data, stream)    # 将data写入到document.yaml 
      print(yaml.dump(data))
    

安装

pip install pyyaml

案例

import os 
import yaml 
import datetime

def get_main_path(file, parent_number=0): 
    """ 
    :param file:对应文件 
    :param parent_number:层级 
    :return: 对应文件父级目录 或当前目录 
    """ 
    self_path = os.path.abspath(file) 
    for i in range(parent_number): 
        self_path = os.path.dirname(self_path) 
    return self_path

class Config(object):
    def __init__(self, path):
        self._path = path
        self._config = {}
        self._envConfig = {}
    def load(self):
        config = yaml.load(open(self._path, encoding='utf-8'), Loader=yaml.FullLoader)
        self._config = config
        self._envConfig = config.get(config.get("env"))
        return self
    def getServerName(self):
        return self._config.get("name")
    def getPostgresqlDB(self):
        return self._envConfig.get("db")

标签:name,配置文件,python,self,yaml,._,path,dump
From: https://www.cnblogs.com/clearheart/p/17358191.html

相关文章

  • c语言和python语言写爬虫哪个更好 ?
    c语言和python语言写脚本那个更好?这取决于具体的应用场景和需求。C语言是一种高效、灵活的编程语言,适合于底层系统开发、操作系统、嵌入式开发等领域。C语言可以直接操作内存,因此可以更好地控制程序的性能和资源利用。Python语言则是一种高级编程语言,具有简洁、易读、易写等特点......
  • python+playwright 学习-58 Jenkins上使用 Pipeline 运行 playwright 自动化脚本
    前言Dockerfile.focal可用于在Docker环境中运行Playwright脚本。这些镜像包括在Docker容器中运行浏览器所需的所有依赖项,还包括浏览器本身。playwright在linux系统上目前只支持Ubuntu系统的部分版本,centos和debian系统上是没法运行的。jenkins环境准备需安装2个跟d......
  • Python打印一个字典,输出带双引号
    Python中dict(字典)默认的表示方式是用单引号表示键和值,例如:my_dict={'key1':'value1','key2':'value2'}print(my_dict)这将输出:{'key1':'value1','key2':'value2'}如果你想使用双引号代替单引号进行表示,可以使用json......
  • 【单例设计模式原理详解】Java/JS/Go/Python/TS不同语言实现
    简介单例模式(SingletonPattern)属于创建型设计模式,这种模式只创建一个单一的类,保证一个类只有一个实例,并提供一个访问该实例的全局节点。当您想控制实例数目,节省系统资源,并不想混用的时候,可以使用单例模式。单例有很多种实现方式,主要分为懒汉和饿汉模式,同时要通过加锁来避免线程......
  • Python常用魔法方法
    Python常用魔法方法1、__new__()__new__是在实例创建之前被调用的,用于创建实例,然后返回该实例对象2、__init__()__init__是当实例对象创建完成后被调用的,用于初始化一个类实例classMyClass(object):def__init__(self,name,age):print('__init__called')......
  • 递归比较两个字典差异-python dict different
    deffindDiff(d1,d2,path=""):forkind1:if(knotind2):print(path,":")print(k+"askeynotind2","\n")else:iftype(d1[k])isdict:......
  • python数据可视化神库:Matplotlib快速入门
    Matplotlib易于使用,是Python中了不起的可视化库。它建立在NumPy数组的基础上,旨在与更广泛的SciPy堆栈一起工作,并由几个图组成:线图、条形图、散点图、直方图等。快速入门importmatplotlib.pyplotasplt#initializingthedatax=[10,20,30,40]y=[20,30,40,50]......
  • EBS: APP-PER-50022: ORACLE 人力资源管理系统无法检索用户类型配置文件选项的值
    在PO模块设置的人员,点击“人员”功能菜单时,提示: APP-PER-50022。。。。。的错误。路径:PO》》设置》》人员。APP-PER-50022:ORACLE人力资源管理系统无法检索用户类型配置文件选项的值。请确保为您的责任正确设置此值。尝试解决方式(失败了):  PROFILE |     ......
  • 合并两个有序链表--Python实现
    将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。#Definitionforsingly-linkedlist.#classListNode:#def__init__(self,x):#self.val=x#self.next=NoneclassSolution:defmergeT......
  • macos Python.运行时,遇到这个问题:ImportError: ('Unable to load OpenGL library', "
    问题安装https://gitee.com/mirrors/animated-drawings这个部署时,安装环境出现如下问题:pycharm下打开这个文件:python3.9/site-packages/OpenGL/platform/ctypesloader.py在79行下修改如下:......