标签:coding 第三方 防止 打开 思路 loader pre 引号 不用
为了是程序中的一些必要参数在根据不同的使用场景不需要每次都去修改代码源文件,所以可以讲这些参数写在配置文件中,然后在不同的应用场景中,去修改配置文件即可,不用去修改代码源文件。
常用的配置文件中.ini
文件和.yaml
文件。
.ini
配置文件.ini
配置文件的编写格式。.ini
文件的书写需要三要素:section
,options
,values
。
每一个section
都相当于一个段落,这个段落中存放的是options=value
格式的配置信息。
每一个.ini
配置文件都可以有多个section
段落,分别代表不同的配置信息。section
是一个配置信息的段落名,所以它是单独独占一行,且需要被写在[]
中。
; 这是注释
[section0]
key0 = value0
key1 = value1
[section1]
key2 = value2
key3 = value3
.ini
配置文件中也可以有注释,注释是写在以;
开头的行中。
python
读取配置文件信息在python
中,有一个内置的读取.ini
文件的类库,它专门用于对.ini
配置文件进行读取或是写入操作:configparser
。
from configparser import ConfigParser
parse = ConfigParser()
# 读取ini文件
s = parse.read("conf.ini", encoding="utf-8")
# 按需读取文件中的配置信息
val = parse.get("email_qq", "sender")
print(val, type(val))
读取.ini
文件操作步骤:
1. 引入configparser
库,使用其中的ConfigParser
类。
from configparser import ConfigParser
2. 实例化ConfigParser
。
parse = ConfigParser()
3. 运用实例化的对象,调用ConfigParser
类中的read
方法,将.ini
文件整体读取到电脑内存中。
parse.read("conf.ini", encoding="utf-8")
这个方法接收两个参数:一个是配置文件,可以读取一个配置文件,也可以读取多个配置文件;还有一个是编码格式,默认的编码格式是None
,但是为了防止配置文件中有中文, 所以将编码格式设置成utf-8
。
4. 按需读取,使用get()
方法,读取想要的数据。
val = parse.get("email_qq", "sender")
print(val, type(val))
该方法接收两个参数:一个是配置文件的section
名,因为需要按照不同的需求, 从不同的section
中取值;另一个就是options
名。
这样就可以配置文件中,按照section
和options
两个条件来获取需要的数据。
但是,get
方法读取出来的数据,全部是字符串类型的数据。ConfigParser
类还提供读取整型,浮点型和布尔型数据的方法。
parse.getboolean("email_qq", "is_ok")
parse.getint("email_qq", "port")
parse.getfloat("email_qq", "pwd")
但是,需要注意的是:如果想要读取出来的数据时布尔值,那么在配置文件中存放的数据要看起来像是布尔类型, 也就是存放的数据要是True/False
或是true/false
才可以。
ini
配置文件中的信息在python
内置的configparser
库中,没有提供一次性读取全部数据的方法,所以需要去手动实现这一功能。
实现的思路就是:先获取ini
文件中的全部sections
,然后再获取每个sections
中的全部options
,最后根据options
去取值。
from configparser import ConfigParser
parse = ConfigParser()
s = parse.read("conf.ini", encoding="utf-8")
# 获取ini文件中的全部section
section_list = parse.sections()
print(section_list)
val_list = []
for section in section_list:
# 获取每个section中全部option
option_list = parse.options(section)
for option in option_list:
val = parse.get(section, option)
val_list.append(val)
print(val_list)
yaml
配置文件yaml
在python
中的比较多。
yaml
是一种简介的非标记语言,以数据为中心,使用空白、缩进、分行组织数据, 从而使得表示更加简介 容易。
yaml
的基本规则:
python
中的数据。yaml
语法规则yaml
语法支持字典,列表,和纯量。
yaml
语法中,使用英文冒号表示一组键值,并且使用缩进表示字典的嵌套:
info:
name: Tom
age: 18
gender: 男
上组例子,如果转换成python
中的字典,则表示为:
{
"info": {
"name": "Tom",
"age": 18,
"gender": "男"
}
}
yaml
语法中,使用-
表示一个列表中的元素,通过缩进,表示列表中嵌套列表。
- China
- 山东
- 山西
- USA
- Japan
以上数据,在python
中的表示为:
[
"China",
["山东", "山西"],
"USA",
"Japan"
]
但是注意:在yaml
文件中进行编写的时候,要么是整体是一个字典,要么是整体是一个列表,不能出字典与列表并存的现象;但是允许字典中嵌套列表,或是列表中嵌套字典等的数据嵌套关系。
.yaml
文件在python
中使用第三方库pyyaml
来读取.yaml
文件。
下载安装pyyaml
库:pip install pyyaml
。
读取文件的步骤很简单:
pyyaml
;yaml
文件;load
方法读取文件数据。import yaml
# 打开yaml文件
with open("conf.yaml", encoding="utf-8") as f:
# 使用yaml中的load方法,这个方法需要传递两个参数,一个是文件句柄,一个是yaml提供的加载器
data = yaml.load(f, yaml.FullLoader)
print(data)
注意:在引入模块的时候,引入的是yaml
,而不是pyyaml
;使用pyyaml
读取文件的时候,是一次性将文件中的全部读取完毕。
标签:coding 第三方 防止 打开 思路 loader pre 引号 不用
原文地址:https://www.cnblogs.com/Pilaoban/p/13173085.html