python 读取yml文件_Python 读取 yaml 配置文件 | 文艺数学君
摘要這一篇介紹 Python 中使用 yaml 的方式加載配置文件,包含關于 pyyaml 的簡單使用,讀入和寫入配置文件。
簡介
之前我們介紹過使用 configparser 來讀取配置文件(Python讀入配置文件-configparser介紹),這里我們介紹另外一種 Python 寫配置文件的方式,使用 yaml 來寫配置文件。我們會使用 pyyaml 庫來完成。
Yaml 配置文件介紹
為了可以讀取 yaml 文件,我們需要安裝 pyyaml 并導入 yaml 模塊。使用 pip install pyyaml 來進行安裝即可。
yaml 文件規則
首先來說明一下 yaml 配置文件書寫的時候的規則:
配置文件區分大小寫;
使用縮進表示層級關系;
使用空格鍵縮進,縮進的空格數目不固定,只需要相同層級的元素左側對齊;
文件中的字符串不需要使用引號標注,但若字符串包含有特殊字符則需用引號標注;
注釋標識為 #
鍵值對用冒號 ':' 結構表示,冒號與值之間需用空格分隔
可以在配置前加有 "-" 符號,符號與值之間需用空格分隔,來表示數組。(也可以直接寫成 list 的形式即可)
yaml 配置文件支持的數據類型如下所示:
#?純量
s_val:?name??????????????#?字符串:{'s_val':?'name'}
spec_s_val:?"name\n"????#?特殊字符串:{'spec_s_val':?'name\n'
num_val:?31.14??????????#?數字:{'num_val':?31.14}
bol_val:?true???????????#?布爾值:{'bol_val':?True}
nul_val:?null???????????#?null值:{'nul_val':?None}
nul_val1:?~?????????????#?null值:{'nul_val1':?None}
time_val:?2018-03-01t11:33:22.55-06:00?????#?時間值(iso8601格式):{'time_val':?datetime.datetime(2018,?3,?1,?17,?33,?22,?550000)}
date_val:?2019-01-10????#?日期值:{'date_val':?datetime.date(2019,?1,?10)}
下面是一個基本的 yaml 配置文件的示例,包含了一些基本的元素:
train:
batch_size:?25
lr:?0.001
train_index:?[1,2,3]
test:
batch_size:?'100'
test_index:
-?1
-?2
-?3
讀取 yaml 配置文件
我們使用 yaml.safe_load 來讀取上面的配置文件。讀取的結果會保存為 python 中的 dict 類型。
import?os
import?yaml
with?open(os.path.join('test.yaml'))?as?f:
cfg?=?yaml.safe_load(f)?#?讀取配置文件
print(cfg)
最終輸出的值如下所示:
這一部分可以和 easydict 配合使用,關于 easydict 的內容可以查看鏈接,Python 中 EasyDict 的使用。
import?os
import?yaml
from?easydict?import?EasyDict
def?setup_config():
with?open(os.path.join('test_config.yaml'))?as?f:
cfg?=?yaml.safe_load(f)?#?讀取配置文件
cfg?=?EasyDict(cfg)?#?存成?Easydict?的格式
return?cfg
生成 yaml 配置文件的格式
我們可以使用 yaml.dump 來將字典或是列表轉換為 yaml 的標準格式。還是上面的例子,這里我們使用 yaml.dump 來看一下最終生成的結果。
import?os
import?yaml
with?open(os.path.join('test.yaml'))?as?f:
cfg?=?yaml.safe_load(f)?#?讀取配置文件
print(cfg)
print('='*10)
print(yaml.dump(cfg))
可以看到使用 yaml.dump 可以生成 yaml 所需要的格式。
我們也可以將輸出的內容直接保存到文件中。(yaml.dump?accepts the second optional argument, which must be an open text or binary file. In this case,?yaml.dump?will write the produced YAML document into the file. Otherwise,?yaml.dump?returns the produced document.)
import?os
import?yaml
with?open(os.path.join('test.yaml'))?as?f:
cfg?=?yaml.safe_load(f)?#?讀取配置文件
stream?=?open('document.yaml',?'w',?encoding='utf8')
yaml.dump(cfg,?stream)
這樣可以直接將 yaml 保存到文件 document.yaml 中去。
總結
以上是生活随笔為你收集整理的python 读取yml文件_Python 读取 yaml 配置文件 | 文艺数学君的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 浅谈python_浅谈python-Dj
- 下一篇: 4g ecgi 编码_4G学习之IMSI