Python で YAML ファイルを解析する

Rayven Esplanada 2023年10月10日
Python で YAML ファイルを解析する

このチュートリアルでは、Python で YAML ファイルを解析するさまざまな方法を示します。

YAML は、プロジェクト内に構成ファイルまたはプロパティファイルを保存するためのファイルタイプとして使用されるデータシリアル化標準です。YAML は、通常の XML または JSON 構成ファイルを置き換えることがよくあります。これは、ファイルが両方のファイルタイプよりもシリアル化が容易なためです。

Python で PyYAML パッケージを使用して YAML を解析する

pyyaml は、Python で YAML ファイルを解析および操作するためのユーティリティを提供する Python パッケージです。

最初のステップは、Python ではすぐに利用できないため、pip を使用して pyyaml をインストールすることです。

pip install pyyaml 

Python 3.x ユーザーの場合、pip の代わりに pip3 を使用します。

pip3 install pyyaml

これでインストールが完了しました。サンプル YAML ファイルの解析に進みます。YAML ファイルには、新しい YAML ドキュメントの開始を示すために、ファイルの先頭に常に 3つのダッシュ --- があります。

YAML ファイルはタブスペースをインデントとして認識しないため、スペースは YAML ファイルをインデントするときにのみ使用する必要があることに注意してください。

YAML ファイルの拡張子は .yaml または .yml のいずれかです。

  • sample.yaml
---
	name: "John"
	age: 23
	isMale: true
	hobbies:
		- swimming
		- fishing
		- diving

指定された YAML ファイルを Python で読み取るには、最初に yaml モジュールをインポートします。その後、関数 open() を使用して yaml ファイルを開きます。yaml モジュールには、事前定義された関数 load() があります。この関数は、ファイルを引数として受け取り、Python で YAML ファイルをロードし、それを Python オブジェクトデータ型に変換します。

import yaml

with open("sample.yaml", "r") as f:
    print(yaml.load(f))

yaml.load() の出力を出力すると、YAML ファイルの内容が Python オブジェクト形式で表示されます。

出力:

{'name': 'John', 'age': 23, 'isMale': True, 'hobbies': ['swimming', 'fishing', 'diving']}

YAML ファイルが存在し、破損しておらず、安全に使用できることを確認するために、try ブロックを追加し、yaml モジュール YAMLError 内の組み込みエラーオブジェクトを使用して例外をキャッチできます。コードをより安全に使用できるようにするもう 1つのレイヤーは、load() 関数を safe_load() に置き換えることです。これは、YAML ファイルをロードする前に検証します。

import yaml

with open("sample.yaml", "r") as stream:
    try:
        print(yaml.safe_load(stream))
    except yaml.YAMLError as exc:
        print(exc)

このソリューションの出力は前のソリューションと同じですが、これは Python で YAML ファイルを解析するためのはるかに安全なアプローチです。

要約すると、Python で YAML ファイルを解析するには、yaml モジュールを使用することで簡単に実現できます。モジュールは簡単に組み込まれないため、モジュールを使用する前に必ず pip install pyyaml を実行してください。

ファイル操作がスムーズに行われ、安全に実行できるように、ファイル操作関数を try...except ブロックでカプセル化することをお勧めします。

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

関連記事 - Python YAML