您的位置:

python操作yaml,python操作压缩包

本文目录一览:

python中四种配置文件

常用的配置文件后缀是.ini、.conf、.py,当然还有使用.json、.txt的,推荐使用常用的.ini、.py,配置文件的名字一般是config便于理解和使用。

ini配置文件,这类配置文件我们使用内置configparser库来使用,它可以实现配置文件的写入、更新、删除、读取等操作非常方便,建议使用这种方式。

新建一个config.ini的配置文件内容如下,编码格式要是 utf-8 以免出错。:

其中[]中的是section节点,该节点下的等式是option即键=值

然后每一行写一个option ,每个选项就是一个option。直接写名字,后面加 " = " 再加上它的值就行,字符串的表示不要加引号,否则引号也会被解析出来。

可以在配置文件中加入注释 ,但是注释必须是单独的一行,且以 “#” 开头。只是每次运行时不会读入注释,只要运行一次,写入文件后,所有的注释都会消失。

config.json文件

使用python内置的 json 标准库进行解析ini文件。

load() 从json文件中读取json格式数据

loads() 将字符串类型数据转化为json格式数据

dump() 将json格式数据保存到文件

dumps() 将json格式数据保存为字符串类型

TOML的语法广泛地由key = "value"、[节名]、#注释构成。

支持以下数据类型:字符串、整形、浮点型、布尔型、日期时间、数组和图表。

config.toml文件

使用外部库 toml 解析toml文件。

安装:pip install toml

读取文件

安装:

YAML是目前最推荐的配置文件格式。优秀的配置文件标准它几乎都有:

容易阅读和修改,支持注释。

支持丰富的数据类型。

不同格式的明确表达。

yaml使用时需要注意:

yaml强制缩进。虽然不规定具体缩进几个空格,但是同一级的内容要保持相同的缩进。

冒号后面一定要加空格, 否则无法解析。

python解析 yaml 可以使用pyyaml库,操作和标准的文件操作非常类似:

得到的data就是解析后的数据,在python当中,它是一个嵌套的字典:

想获取某一项配置,再通过字典的操作获取:

config.yaml文件

读取

2019-05-30 Python+Jinja2+yaml 批量生成配置

目前来看,Python+yaml+Jinja2是非常方便生成批量配置的组合,在运维工作中用于批量生成设备的基础配置。

这里我的案例是配置一批交换机,基础配置不同的地方有:loopback地址(IPV4和IPV6),设备名称,ISIS网络号,至于其他互联地址什么的因为情况比较复杂,还是手工做吧。

那么思路就有了。

1、生成yaml文件,类似于下面结构:

这里说明一下,loopback地址的V4网段是先规划好的,V6地址和ISIS网络号通过一定规则根据V4地址生成,这个yaml文件可以通过读取excel文件,按照算法生成yaml文件,这个在其他文章里再写。

2、读取yaml文件,生成一个由字典组成的列表。每个字典的信息就包含了每台设备需要的变量。

3、写一个函数,遍历列表里的字典,每读取一个字典,把其中变量取出来放进一个临时字典,渲染jinja2的模板,对每个字典输出不同的配置文件。这个临时字典每读取一次就清空,重新写入变量。

有一些细节比如文档取名,时间函数等要调用一些模块,总结一下涉及的知识点,有:yaml模块,jinja2模块,os模块,日期函数,条件循环,I/O操作。

附上python脚本:

模板文件放在‘templates’目录下,否则会报错找不到文件。

python新手,有不合理的地方请高手指点。

YAML用法详解

  近期在调试SONIC上基于Ansible的PTF测试平台时,使用到了YANML配置语言,此处稍作解释,汇总一下YAML的语法及基本使用方法。

   YAML ( /ˈjæməl/ ,尾音类似 camel 骆驼)是一个可读性高,用来表达数据序列的格式。YAML参考了其他多种语言,包括: C语言 、 Python 、 Perl ,并从 XML 、电子邮件的数据格式(RFC 2822 )中获得灵感。上述介绍引用自 维基百科 ,通俗的讲,YAML是专门用来写配置文件的语言,非常简洁和强大,远比 JSON/XML格式方便。YAML允许在层次结构中存储结构化数据。YAML 旨在以人为和机器可读,并且开销最小。YAML 规范可以在 yaml.org 找到,官方还提供了一个便捷的 YAML小抄 。

  再次强调,字符串不需要包在引号之内。有两种方法书写多行文字(multi-line strings),一种可以保存新行(使用|字符),另一种可以折叠新行(使用字符)

和保存新行不同的是,换行字符会被转换成空白字符。而引领空白字符则会被自动消去。

常量值最基本的数字、字符串、布尔值等等

在python中,会将上述键值对解析为一个字典

上述键值对可以嵌套,从而实现更加复杂的数据结构:

在python中,会将其解析为嵌套的字典结构:

在python中,会将其解析为字典嵌套列表的复合数据结构:

  为了维持文件的简洁,并避免数据输入的错误,YAML提供了结点参考(*)和散列合并()参考到其他结点标签的锚点标记()。参考会将树状结构加入锚点标记的内容,并可以在所有数据结构中运作(可以参考上面"ship-to"的示例)合并只有散列表可以使用,可以将键值自锚点标记复制到指定的散列表中。当数据被instantiate合并和参考会被剖析器自动展开。

YAML 文件介绍

YAML 是一种可读性非常高,与程序语言数据结构非常接近。同时具备丰富的表达能力和可扩展性,并且易于使用的数据标记语言。

YAML是 "YAML Ain't a Markup Language"(YAML不是一种标记语言)的递归缩写。

这么命名的方式,表示 YAML 强调的不是标记,而是数据本身。

YAML 参考了其他多种语言,包括:XML、C语言、Python、Perl 以及电子邮件格式 RFC2822。

YAML 发布与 2001 年,之前并不出名,现在逐渐开始流行。测试圈中,主要应用于自动化测试过程,用来进行数据驱动的数据存储载体。

基本语法规则(很接近 Python 的语法规则):

支持的数据格式:

以下是 YAML 数据格式的示例:

对象

转换为Python字典格式为

YAML也支持另一种对象的写法,将所有的键值对写成一个行内对象

转换为Python字典格式为

数组

一组连词线开头的行,构成一个数组

转换为Python

也可以通过缩进空格来表示多维数组

转换为Python的列表

当然,也可以采用行内表示法

转换为Python

纯量

纯量是最基本的、不可再分的值。 以下数据类型都是常见的纯量。

纯量一般表示如下

转换为Python

yaml 文件通过 pyyaml 库转换后就是 Python 中对应的数据类型。直接进行操作即可,相较从 excel 中读取数据全部是字符串的方式来说,处理更方便。相对于 json 格式,可读性更高。