1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

YAMLの基本を学んでPythonでYAMLを使ってみよう!

Posted at

PythonでYAMLを使ってみよう!基本からサンプルコードまで

YAMLは、人間が読みやすい形式でデータを記述するためのマークアップ言語です。構造化されたデータの表現に適しており、設定ファイルやデータのシリアル化に広く使用されています。本記事では、YAMLの基本的な概念から、Pythonを使ったサンプルコードまで紹介します。

YAMLの基本構文

YAMLには、データを表現するためのいくつかのスタイルがあります。代表的なものとして「ブロックスタイル」と「フロースタイル」があります。

ブロックスタイル

ブロックスタイルは、インデントを使用して階層構造を表現する方法です。最も一般的なYAMLの記述形式です。

# config.yaml
database:
  host: localhost
  port: 3306
  user: root
  password: secret
  name: mydatabase

フロースタイル

フロースタイルは、インラインでデータを表現する方法です。2種類あります。

シーケンス

シーケンス(配列)をインラインで表現する方法です。

numbers: [1, 2, 3, 4, 5]

マッピング

キーと値のペアをインラインで表現する方法です。

user: {name: John, age: 30, city: Tokyo}

データ型

YAMLはさまざまなデータ型をサポートしています。以下に代表的なものを紹介します。

文字列

name: "YAML Example"

数値

integer: 10
float: 3.14

真偽値

is_active: true

Null値

no_value: null

日付

date: 2024-08-05

改行を扱う方法

YAMLで複数行の文字列を扱う場合、|(リテラル)または>(折りたたみ)のシンボルを使います。

リテラル

改行をそのまま保持します。

description: |
  これはYAMLの
  改行を保持する
  例です。

折りたたみ

改行を空白に置き換えます。

description: >
  これはYAMLの
  改行を空白に置き換える
  例です。

区切り文字について

YAMLでは、ドキュメントの区切りとして---...を使用します。

---

新しいドキュメントの開始を示します。

---
name: "First Document"
---
name: "Second Document"

...

ドキュメントの終了を示します。

name: "YAML Document"
...

PythonでYAMLを使ったサンプルプログラム

では、実際にPythonを使ってYAMLファイルを読み込むサンプルプログラムを作成してみましょう。PyYAMLというライブラリを使います。

環境の準備

まず、PyYAMLをインストールします。

pip install pyyaml

サンプルコード

以下のPythonプログラムは、YAMLファイルを読み込み、その内容を表示する簡単な例です。

import yaml

# YAML 設定ファイルを読み込む関数
def load_config(file_path):
    with open(file_path, 'r') as file:
        config = yaml.safe_load(file)
    return config

# 設定内容を表示する関数
def display_config(config):
    print("データベース設定:")
    print(f"ホスト: {config['database']['host']}")
    print(f"ポート: {config['database']['port']}")
    print(f"ユーザー: {config['database']['user']}")
    print(f"パスワード: {config['database']['password']}")
    print(f"データベース名: {config['database']['name']}")
    
    print("\nロギング設定:")
    print(f"レベル: {config['logging']['level']}")
    print(f"ログファイル: {config['logging']['file']}")

# メイン処理
if __name__ == "__main__":
    config = load_config('config.yaml') #ここはパスを適宜調整してください
    display_config(config)

実行結果

config.yamlファイルの内容を以下のように表示します。

データベース設定:
ホスト: localhost
ポート: 3306
ユーザー: root
パスワード: secret
データベース名: mydatabase

ロギング設定:
レベル: DEBUG
ログファイル: /var/log/myapp.log

まとめ

この記事では、YAMLの基本的な構文やデータ型、Pythonを使ったサンプルコードを紹介しました。YAMLは読みやすく、設定ファイルなどに最適です。Pythonと組み合わせることで、簡単に設定ファイルを扱うことができるので、ぜひ試してみてください。

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?