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
ブロックでカプセル化することをお勧めします。
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