こんにちは!みやしんです。
今回はpythonの設定ファイルの1つ「yamlファイル」の使い方についてご紹介します。
PythonやAIをもっと勉強したい方🤗

設定ファイルとは
設定ファイルとは簡単に言うと「設定(値)が書かれているファイル」です!
そのまんまですね!
データ処理をしたりするときをはじめ、様々な場合で使われています。
例えば、
測定条件:
温度(℃):60
速度(km/h):90
コメント:’正常終了しました’
のような感じです。60、90、’正常終了しました’ のところを設定に応じて変えるイメージです。
スクリプト内に書いても良いのですが、別ファイルとして保存しておいた方が扱いやすいので設定ファイルを使う場合が多いです。
設定ファイルには今回ご紹介するyamlファイル以外にも様々な形式(JSON、XML、ini 等)がありますが、どれを使っても良いです。使いやすいものを選びましょう。
yamlファイルとは
yamlファイルとは、上記で説明したような設定ファイルです。記述方式が比較的「人」が理解し易いため手動入力による記述を想定したときに使用されることが多いです。(逆にスクリプトなどで自動出力、自動入力を行う想定のものにはJSONなどが用いられることが多い傾向にあります。
PyYAMLモジュールのインストール
Pythonでyamlファイルを扱う際はPyYAMLモジュールを使うと便利です。
インストール方法は、Anacondaの場合は、
conda install pyyaml
pipの場合は、
pip install pyyaml
でできます。
yamlファイルの作成
yamlファイルの基本的な記述方法は下記のようにパラメータ名の後に:を付け、TABでインデントを区切ることで、親パラメータ名 – 子パラメータ名と階層を作りながら記述します。
また、設定値はパラメータ名の後に:を付け、その後ろに記述します。
今回はサンプルとして下記のように記述したyamlファイル(sample.yaml)を準備してみましょう。
# コメントは「#」を付けて入力
# ファイル名 sample.yamlの中身
Param_A:
param_A_a: 128
param_A_b: '文字列も使用可能'
Param_B:
param_B_a: 256
param_B_b: [[100, 200], [300, 400]] # 配列形式も可能
param_B_c: {'sample_1':512, 'sample_2':'サンプル'} # 辞書型も可能

「:」の後ろは1マス開けないとPythonを実行したときにエラーになったにゃ!
気を付けるにゃ!
yamlファイルの読込
続いてyamlファイルをpythonで読み込む方法を記載します。
まず、同じフォルダ内に.pyや.ipynbと.yamlファイルを一緒に置いてください

アイコンがVScodeになっているのは気にしないでください。笑
コードは下記のようになります。


コピペ用のサンプルコード
import yaml # インストール名の「pyyaml」とは異なるので注意してください。
# with文を使って読み込む with open('パス', 'r'は読み込み, encoding=文字コード) as ***
with open('./sample.yaml', 'r', encoding='utf-8') as read_yaml:
# yaml.safe_load() を使用して、YAML ファイルを読み込む
sample_yaml = yaml.safe_load(read_yaml)
# 読込んだyamlファイルは辞書型
type(sample_yaml)
# 中身を確認
sample_yaml
# 読込んだyamlファイルのキーは辞書型オブジェクトのためkeys()メソッドで取得可能
sample_yaml.keys(), sample_yaml['Param_A'].keys(), sample_yaml['Param_B'].keys()
# YAMLファイル内の設定値を取得
param_A_a = sample_yaml['Param_A']['param_A_a']
param_A_b = sample_yaml['Param_A']['param_A_b']
param_B_a = sample_yaml['Param_B']['param_B_a']
param_B_b = sample_yaml['Param_B']['param_B_b']
param_B_c = sample_yaml['Param_B']['param_B_c']
# 取得した設定値の確認
param_A_a, param_A_b, param_B_a, param_B_b, param_B_c, param_B_c['sample_1'], param_B_c['sample_2']
PythonやAIをもっと勉強したい方🤗







コメント