python使用yaml格式文件的方法

 更新时间:2023年07月09日 09:56:17   作者:qq_44659804  
本文主要介绍了python使用yaml格式文件的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

安装PyYAML安装包

YAML在python语言中有PyYAML安装包,下载地址:https://pypi.python.org/pypi/PyYAML

联网的windows可直接win+r cmd进入终端pip install PyYAML

配置yaml文件

进入相应python文件的目录,创建yaml文件(略)

通过编程软件创建

自定义文件后缀为 .yaml

编写yaml文件内容

city: shanghai
time: 202210
successfully: 200
exception: 500

python读取yaml文件

#使用utf-8编码
# -*- coding:utf-8 -*-
#导入yaml模块
import yaml
f = open('test.yaml', 'r', encoding='utf-8')  #读yaml文件,编码用utf-8
cfg = f.read()  #读全部文件
d = yaml.load(cfg, Loader=yaml.FullLoader) # 用load方法把读到的yaml文件内容转换成字典类型
# yaml5.1版本后弃用了yaml.load(file)这个用法,因为觉得很不安全,5.1版本之后就修改了需要指定Loader,通过默认加载器(FullLoader)禁止执行任意函数
# Loader=yaml.FullLoader 加上这行代码,告警就没了
print(d)

结果为字典类型

{'city': 'shanghai', 'time': 202210, 'successfully': 200, 'exception': 500}

yaml文件与python代码书写比较

yaml基本语法规则:
键值对
大小写敏感
使用缩进表示层级关系
缩进时不允许使用Tab键,只允许使用空格。
缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
#表示注释,从这个字符一直到行尾,都会被解析器忽略,这个和python的注释一样
yaml支持的数据结构有三种:
对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
纯量(scalars):单个的、不可再分的值。字符串、布尔值、整数、浮点数、Null、时间、日期

字典嵌套字典

#字典嵌套字典
#python代码书写为{'dd': 'city2:shanghai2 time2:2022102'}
#dd:
#  city2: shanghai2
#  time2: 2022102

列表(或叫数组)中嵌套字典,字典中一组数据

#列表(或叫数组)中嵌套字典
#python代码书写为[{'city2': 'shanghai2'}, {'time2': 2022102}, {'successfully': 200}]
#yaml里面写一个列表,前面加一个'-'符号
- city2: shanghai2
- time2: 2022102
- successfully: 200

列表(或叫数组)中嵌套字典,字典中多组数据

#列表(或叫数组)中嵌套字典
#python代码书写为[{'city3': 'shanghai3', 'time3': 2022103}, {'city4': 'shanghai4', 'time4': 2022104}, {'city5': 'shanghai5', 'time5': 2022102}]
- city3: shanghai3
  time3: 2022103
- city4: shanghai4
  time4: 2022104
- city5: shanghai5
  time5: 2022102

字典嵌套列表

#字典嵌套列表
#python代码书写为{'color1': ['red', 1], 'color2': ['bule', 2], 'color3': ['black', 3]}
color1:
  - red
  - 1
color2:
  - bule
  - 2
color3:
  - black
  - 3

组合使用

#组合使用
#python代码书写为{'languages': ['Ruby', 'Perl', 'Python', 'java c++ shell'], 'websites': {'YAML': 'yaml.org', 'Ruby': 'ruby-lang.org', 'Python': 'python.org', 'Perl': 'use.perl.org'}, 'db': {'host': 'xxx', 'port': 3306, 'user': 'shanghai', 'password': 'xxx', 'db_name': 'china', 'db_type': 'mysql'}}
languages:
 - Ruby
 - Perl
 - Python
 - java c++ shell
websites:
 YAML: yaml.org
 Ruby: ruby-lang.org
 Python: python.org
 Perl: use.perl.org
db:
    host: xxx
    port: 3306
    user: shanghai
    password: xxx
    db_name: china
    db_type: mysql

其他类型

#1、数值直接以字面量的形式表示
#number: 202210.010101 #{'number': 202210.010101}
#2、布尔值用true和false表示
#isSet: true #{'isSet': True}
#isSet1: false #{'isSet1': False}
#3、null用~表示
#parent: ~   #{'parent': None}
#4、时间采用 ISO8601 格式。
#time1: 2022-10-10t10:10:10.10-10:00  #{'time1': datetime.datetime(2022, 10, 10, 10, 10, 10, 100000, tzinfo=datetime.timezone(datetime.timedelta(days=-1, seconds=50400)))}
##5、日期采用复合 iso8601 格式的年、月、日表示。
#date: 2022-10-01  #{'date': datetime.date(2022, 10, 1)}
#6、YAML 允许使用两个感叹号,强制转换数据类型,转换成字符串str。
#int_to_str: !!str 123  #{'bool_to_str': '123'}
#bool_to_str: !!str true #{'bool_to_str': 'true'}

到此这篇关于python使用yaml格式文件的方法的文章就介绍到这了,更多相关python使用yaml内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python 3 中使用 Memcached的示例详解

    Python 3 中使用 Memcached的示例详解

    pymemcache是另一个流行的、功能丰富的Python Memcached客户端库,比python-memcached提供了复杂的操作和性能,在 Python3 中,使用 Memcached,高性能的分布式内存对象缓存系统,可以通过多个第三方库来实现,本文介绍Python 使用 Memcached相关知识,感兴趣的朋友一起看看吧
    2024-02-02
  • calendar在python3时间中常用函数举例详解

    calendar在python3时间中常用函数举例详解

    这篇文章主要介绍了calendar在python3时间中常用函数的相关文章,对此知识点有兴趣的朋友们可以学习下。
    2020-11-11
  • flask入门之文件上传与邮件发送示例

    flask入门之文件上传与邮件发送示例

    本篇文章主要介绍了flask入门之文件上传与邮件发送示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • python 如何使用requests下载文件

    python 如何使用requests下载文件

    这篇文章主要介绍了python 如何使用requests下载文件,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • Python利用appium实现模拟手机滑动操控的操作

    Python利用appium实现模拟手机滑动操控的操作

    Appium 是一个开源、跨平台的自动化测试工具,用于测试原生和轻量移动应用,支持 iOS, Android 和 FirefoxOS 平台。本文将利用appium实现模拟手机滑动操控的操作,感兴趣的可以了解一下
    2022-07-07
  • 在Python中操作字符串之startswith()方法的使用

    在Python中操作字符串之startswith()方法的使用

    这篇文章主要介绍了在Python中操作字符串之startswith()方法的使用,是Python入门学习中的基础知识,需要的朋友可以参考下
    2015-05-05
  • Python面向对象中的封装详情

    Python面向对象中的封装详情

    这篇文章主要介绍了Python面向对象中的封装详情,在python中也有对对象的封装操作,使其对外只提供固定的访问模式,不能访问其内部的私有属性和私有方法。下文详细内容,需要的小伙伴可以参考一下
    2022-03-03
  • OpenCV+face++实现实时人脸识别解锁功能

    OpenCV+face++实现实时人脸识别解锁功能

    这篇文章主要为大家详细介绍了OpenCV+face++实现实时人脸识别解锁功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • Python机器学习入门(五)之Python算法审查

    Python机器学习入门(五)之Python算法审查

    这篇文章主要介绍了Python机器学习入门知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • Python高级特性之切片迭代列表生成式及生成器详解

    Python高级特性之切片迭代列表生成式及生成器详解

    这篇文章主要为大家介绍了Python高级特性之切片迭代列表生成式及生成器详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2021-10-10

最新评论