前言
基礎的配置數據我們可以用.ini文件、.json文件等來存放,當然yaml也是可以的,並且使用起來更方便,本篇講解yaml使用
安裝
python中操作yaml文件的庫爲pyyaml模塊
pip install pyyaml 直接安裝(如下圖,安裝完成)
yaml文件編寫的基礎規則
1)大小寫敏感
2)使用縮進表示層級關係
3)縮進時不允許使用Tab,只允許使用空格,空格數目不重要,只要相同層級的元素左對齊即可
4)# 表示註釋
5)默認映射爲一個字典格式,加上“-”表示映射爲一個列表
6)yaml基本類型包括字符串、整型、浮點型、布爾型、null、時間、日期
yaml使用(load讀取文件)
【讀取數據爲字典格式】
test_dict_data.yaml
# test_dict_data.yaml 存放用戶信息,打印出來後會是一個字典 id : 001 name : suner001 pwd : suner123 age : 20 addr : jiangsu
read_yaml.py
# coding:utf-8 # read_yaml.py 讀取yaml文件中的數據並打印結果 import yaml import os cur_path = os.path.dirname(os.path.realpath(__file__)) # 返回當前文件的上層目錄 yaml_path = os.path.join(cur_path,"test_dict_data.yaml") # 拼接yaml文件所在路徑 with open(yaml_path,encoding="UTF-8") as yaml_file: yaml_result = yaml.load(yaml_file) print(yaml_result)
執行時,雖然打印了但是有警告信息,提示缺少加載器
百度解決方法,load函數後增加Loader參數,指定Loader=yaml.FullLoader
完整代碼
# coding:utf-8 # read_yaml.py 讀取yaml文件中的數據並打印結果 import yaml import os cur_path = os.path.dirname(os.path.realpath(__file__)) # 返回當前文件的上層目錄 yaml_path = os.path.join(cur_path,"test_dict_data.yaml") # 拼接yaml文件所在路徑 with open(yaml_path,encoding="UTF-8") as yaml_file: yaml_result = yaml.load(yaml_file,Loader=yaml.FullLoader) print(yaml_result) # 執行結果:{'id': 1, 'name': 'suner001', 'age': 20, 'addr': 'jiangsu', 'pwd': 'suner123'}
【讀取數據爲列表格式】
test_list_data.yaml
# test_list_data.yaml 存放多個用戶信息,打印結果爲一個列表,裏面包含三條字典格式的數據 - id : 001 name : suner001 pwd : suner123 age : 20 addr : jiangsu - id : 002 name : suner002 pwd : suner123 age : 21 addr : shanghai - id : 003 name : suner003 pwd : suner123 age : 22 addr : beijing
read_yaml.py
# coding:utf-8 # read_yaml.py 讀取yaml文件中的數據並打印結果 import yaml import os cur_path = os.path.dirname(os.path.realpath(__file__)) # 返回當前文件的上層目錄 yaml_path = os.path.join(cur_path,"test_list_data.yaml") # 拼接yaml文件所在路徑 with open(yaml_path,encoding="UTF-8") as yaml_file: yaml_result = yaml.load(yaml_file,Loader=yaml.FullLoader) print(yaml_result)
執行結果
yaml使用(dump寫入文件)
test_data.yaml 爲空文件,會將數據寫到此文件中去
import_yaml.py
# coding:utf-8 # import_yaml.py 寫入yaml文件中的數據 import yaml import os cur_path = os.path.dirname(os.path.realpath(__file__)) # 返回當前文件的上層目錄 yaml_path = os.path.join(cur_path,"test_data.yaml") # 拼接yaml文件所在路徑 num_list = list(range(10)) with open(yaml_path,"w",encoding="UTF-8") as yaml_file: yaml.dump(num_list,yaml_file) # 參數爲寫入的數據以及寫入的文件流
執行後,打開test_data.yaml文件查看
至此,簡單的yaml文件的讀取和寫入完成