python之配置文件

一、配置文件类型

1、YAML

2、TOML

3、JOSN

4、XML

5、INI

---目前主流的配置文件为:YAML,INI--为传统的配置文件

---配置文件:

  一个配置文件由两部分组成:注释和内容

  注释:用来解释必要内容,说明作用

  内容:由键值对key-value的形式存储

配置文件是用于配置计算机程序的参数和初始化设置的文件,如果没有这些配置,程序可能无法执行

二、yaml配置文件

1、功能强大,简洁,可表示多种数据类型,采用 .yaml格式。这是目前功能最强大的格式。

适用场景:多层级关系,数组,可定义常量(包括:整数,浮点数,字符串,NULL,日期,布尔,时间)

2、python有yaml配置的第三方库,pyyaml,安装命令:pip install pyyaml

3、yaml的基本语法

1)大小写敏感

2)key后面的:与value之间需要空格

3)注释#,与python一致

4)使用缩进表示层级关系

5)缩进时不允许使用tab键,只能使用空格

6)缩进的空格数无限制,同一层级的元素缩进相同即可

4、YAML 支持的数据结构有三种:

1、对象:键值对的集合,又称为映射(mapping)/哈希(hashes)/字典(dictionary);

key: value

2、数组:一组按次序排列的值,又称为序列(sequence)/列表(list);使用“-”区分序列/列表的一个元素

users: 

   -

  username:"hee"

  password:"1234"

   -

  username:"yyy"

  password:"123"

此处:key为users的value是一个序列,每个元素是个字典,"users":[{"username":"hee","password":"1234"},{"username":"yyy","password":"123"}]

3、纯量(scalars):单个的、不可再分的值。字符串、布尔值、整数、浮点数、Null、时间、日期等;

5、yaml配置文件的解析

1)先安装第三方库 pip install pyyaml

import yaml

with open("h_yaml.yaml",encoding="utf-8") as f:

  data = yaml.load(f,Loader=yaml.SafeLoader)  #  Loader为安全加载,使用可去掉告警

print(data["users"][0]["username"])  # 输出结果为 hee

解析后获取内容使用字典列表获取值的方法获取

二、INI配置文件

1、INI配置文件是传统的配置文件,由节、键、值组成。

节--section 分组

[section] 

参数(键=值)option

option=value (value不能加引号)

注释

注解使用分号表示";"。在分号后面的文字,直到该行结尾都全部为注解。

2、INI配置文件格式很简单,最基本的三个要素是:parameters,sections和comments。都是字符串形式

1)parameters:INI配置文件最基本的元素就是parameters,每一个parameter都是由option和value组成,中间用等号=连接,”name=hello”name为option,hello为value

2)sections:所有的patameter都是以section为单位结合在一起的,[seciton]独占一行,不可重名,在[seciton]后的参数都属于这个section

3)comments:在INI文件中注释语句是以分号“;”开始的。所有的所有的注释语句不管多长都是独占一行直到结束的。在分号和行结束符之间的所有内容都是被忽略的。

例:INI配置文件

;默认配置

[default]

host=http://example.com

port=7788

;数据库

[db]

host=http://yyy.example.com

port=3306

3、INI配置文件的解析

1)导入Configparser

2)创建Configparser对象,调用read()方法

3)获取配置文件数据

from configparser import ConfigParser

parser = ConfigParser()

parser.read("hee.ini" enconding="utf-8")  # 此处不需要打开文件就可以read是因为ConfigParser的read方法封装了open 

print(parser.get("default","host"))

print(parser.get("db","host"))

 

posted @ 2021-01-05 11:53  %女王%  阅读(2019)  评论(0编辑  收藏  举报