yaml

1 篇文章 0 订阅

参考博客1
参考博客2
参考博客3
字典:用:表示字典的一一对应 用退格表示层级关系(不能用tab,只能用空格,对齐表示相同层级): 后必须有空格才代表字典

{c:{a:1,b:2}}
c:
	a: 1
	b: 2

yaml简单语法

---
dict:
  nb1:
      user: admin
      psw: 123456
---     #分隔  一个文件内可以是多个,但读取时需要使用load_all()读取
list:    #:代表字典
  - user: admin     #-代表是数组
  - psw : 123456
  - bool: True      #bool用True或False表示
  - bool: False
  - '~': None   ~代表None   #~表示None
  -   :
  - '!!代表强制转换类型' :    #!!可以强制转换数据类型
    - !!str 123
    - !!str True
  - time1: 2018-04-18t21:59:43.10+08:00     #时间
  - date1: 2018-04-01
复杂:           #用[]表示数组  {}表示字典
  [
  {a: 1},
  {b: 2}
  ]
?[a,b,c,v]:     #?表示复杂的键
  复杂
yaml|: |      #| 代表所有回车都显示为\n
  czdasd
  asfdas
  afas
  fasfas
  fas
  f
  asf
yaml>: >      #>代表所有回车都显示为空格
  czdasd
  asfdas
  afas
  fasfas
  fas
  f
  asf
yaml: "
  sadas
  asdas
  da
  sd
  ad"
  #双引号,单引号,空格都将显示为一行,测试仍为空格
yaml1:
  - &ss zzz       #设定一个变量
yaml2:
  *ss             #引用这个变量
hr:
 - Mark McGwire
 # Following node labeled SS
 - &SS Sammy Sosa            # 定义要复制的数据
rbi:
 - *SS # Subsequent occurrence   这里是数据复制目标
 - Ken Griffey
   l-explicit-document

yaml模块
pip install pyyaml

import os

import yaml

def yaml_to():
    file_dir = os.path.dirname(os.path.realpath(__file__))      #os.path.realpath(__file__)获取该脚本路径带脚本名,os.path.dirname(os.path.realpath(__file__))该路径的文件夹路径
    yaml_dir = os.path.join(file_dir, 'my_yaml')                #在文件夹路径后加入yaml文件名
    with open(yaml_dir, 'r') as f:                              #打开文件
        d = f.read()                                            #读取文件查看文件内容的原始状态,是str
        f.seek(0, 0)                                            #将读取后文件的指针放回到起始位置
        c = yaml.load_all(d)                                    #用yaml包读取   ,也可以直接转化相应格式的字符串
        return c


def to_yaml(p):
    file_dir = os.path.dirname(os.path.realpath(__file__))
    yaml_dir = os.path.join(file_dir, 'to_yaml')
    with   open(yaml_dir,'w',encoding='utf-8') as f:
        c = yaml.dump_all(p,allow_unicode=True)					#将python对象转换为yaml格式	allow_unicode代表是否转换为Unicode编码,中文编码有关
        f.write(c)												#写入文件

if __name__ == '__main__':
    yaml_ = yaml_to()
    print(yaml_)
    # for i in yaml_:
    #     print('i:',i)
    to_yaml(yaml_)

当yaml文件内有—隔离时只能用load_all读取 python的迭代器对象只能由dump_all转换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值