ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python读取yaml配置文件

2019-12-19 18:53:28  阅读:296  来源: 互联网

标签:Python 配置文件 YAML python Perl yaml org Ruby


首先了解一下yaml最基础、最常用的语法

  • 大小写敏感
  • 使用缩进代表层级关系
  • 缩进只能用空格,不能使用Tab
  • 不要求空格个数,只要相同层级左对齐
  • 冒号后面需要输入一个空格,再输入值
  • 字符串默认不使用引号表示,也可以用单引号或双引号,双引号不会对特殊字符进行转义
s1: '内容\n字符串'
s2: "内容\n字符串"
  • 单引号之中如果还有单引号,必须连续使用两个单引号转义
str: 'labor''s day' 

 map嵌套map(字典)

# YAML表示
websites:
    YAML: yaml.org 
    Ruby: ruby-lang.org 
    Python: python.org 
    Perl: use.perl.org 

# 对应Json表示
{ websites: 
   { YAML: 'yaml.org',
     Ruby: 'ruby-lang.org',
     Python: 'python.org',
     Perl: 'use.perl.org' } }

 map嵌套list(列表)

# YAML表示
languages:
    - Ruby
    - Perl
    - Python 
    - c

# 对应Json表示
{ languages: [ 'Ruby', 'Perl', 'Python', 'c' ] }  

 list嵌套list

# YAML表示
-
    - Ruby
    - Perl
    - Python 
- 
    - c
    - c++
    - java

# 对应Json表示
[ [ 'Ruby', 'Perl', 'Python' ], [ 'c', 'c++', 'java' ] ]
除此以外,还可以如下表示该结构

# 方法2
- - Ruby
    - Perl
    - Python 
- - c
    - c++
    - java

# 方法3
- [Ruby,Perl,Python]
- [c,c++,java]

 list嵌套map

# YAML表示
-
    id: 1
    name: huang
-
    id: 2
    name: liao

# 对应Json表示
[ { id: 1, name: 'huang' }, { id: 2, name: 'liao' } 

 

1、安装yaml

pip install pyyaml

2、编写一个py文件,读取yaml文件,yaml文件需要通过load方法转换成字典格式,然后再通过字典取值的方式获得值  

# -*- coding:utf-8 -*- 

import yaml
import os


# 获取当前文件的RealPath  F:\before\lds\pages
fileNamePath = os.path.split(os.path.realpath(__file__))[0]

# 获取配置文件的路径   F:\before\lds\pages\application-lds.yml
yamlPath = os.path.join(fileNamePath, 'application-lds.yml')

# 先读取文件数据,再通过load方法转成字典
with open(yamlPath, 'r', encoding='utf-8') as f:
    x = yaml.load(f, Loader=yaml.FullLoader)
    print(x['table']['self'])

load加载成字典形式后,就可以使用key-value的形式去取值了。  

标签:Python,配置文件,YAML,python,Perl,yaml,org,Ruby
来源: https://www.cnblogs.com/wulixia/p/12069500.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有