<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>「PyYAML」タグの記事一覧Python Tech</title>
	<atom:link href="https://tech.nkhn37.net/tag/pyyaml/feed/" rel="self" type="application/rss+xml" />
	<link>https://tech.nkhn37.net</link>
	<description>Python学習サイト</description>
	<lastBuildDate>Wed, 24 Dec 2025 21:15:55 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.2</generator>

<image>
	<url>https://tech.nkhn37.net/wp-content/uploads/2021/01/cropped-lion-normal-clear-1-32x32.png</url>
	<title>「PyYAML」タグの記事一覧Python Tech</title>
	<link>https://tech.nkhn37.net</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【Python】PyYAMLでのYAMLファイル管理</title>
		<link>https://tech.nkhn37.net/python-yaml-basic/</link>
					<comments>https://tech.nkhn37.net/python-yaml-basic/#respond</comments>
		
		<dc:creator><![CDATA[naoki-hn]]></dc:creator>
		<pubDate>Tue, 23 Mar 2021 00:00:00 +0000</pubDate>
				<category><![CDATA[yaml]]></category>
		<category><![CDATA[dump]]></category>
		<category><![CDATA[load]]></category>
		<category><![CDATA[Loader]]></category>
		<category><![CDATA[PyYAML]]></category>
		<category><![CDATA[SafeLoader]]></category>
		<category><![CDATA[safe_load]]></category>
		<guid isPermaLink="false">https://tech.nkhn37.net/?p=1329</guid>

					<description><![CDATA[Python で YAML ファイルの管理をする際に使用する PyYAML の基本的な使い方について解説します。 PyYAML での YAML ファイル管理 YAML ファイルは、YAML Ain&#8217;t Mar [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Python で <span class="jinr-d--text-color d--marker1 d--bold">YAML</span> ファイルの管理をする際に使用する <span class="jinr-d--text-color d--marker1 d--bold">PyYAML</span> の基本的な使い方について解説します。</p>



<h2 class="wp-block-heading jinr-heading d--bold" id="yamlファイルの管理">PyYAML での YAML ファイル管理</h2>



<p class="wp-block-paragraph"><span class="jinr-d--text-color d--marker1 d--bold">YAML</span> ファイルは、<strong>YAML Ain&#8217;t Markup Language</strong> ファイルのことで、XML や JSON と同じように構造化されたデータを表現するためのフォーマットです。</p>



<p class="wp-block-paragraph">拡張子は「<code>.yml</code>」または「<code>.yaml</code>」です。正式な拡張子としては <code>.yaml</code> ですが、拡張子は一般的に 3 文字のものが多く使われるため <code>.yml</code> が使用されることが多いです。</p>



<p class="wp-block-paragraph">YAML ファイルの簡単な例は以下になります。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">DB_SERVER:
  HOST: 192.168.1.200
  PORT: 3306
WEB_SERVER:
  HOST: 192.168.1.100
  PORT: 80</pre>



<p class="wp-block-paragraph">YAML ファイルでは、「<code>キー: 値</code>」の形式になっており、例では、<code>DB_SERVER</code> というキーの下には、<code>HOST</code> と <code>PORT</code> の情報を持っており、それぞれの値が何であるのかというような階層構造を簡単に表現できます。また、YAML ではインデントを使ってデータの階層構造を表し、XML のような終了タグもないので、書きやすくかつ読みやすいです。</p>



<p class="wp-block-paragraph">YAML は各種設定ファイル、ログ、データ保存など色々な用途で使用されます。Python でYAMLファイルを扱う場合には、<span class="jinr-d--text-color d--marker1 d--bold">PyYAML</span> というライブラリを使用します。</p>



<p class="wp-block-paragraph">この記事では、PyYAML を使って YAML ファイルを扱う方法を紹介します。</p>



<section class="wp-block-jinr-blocks-iconbox b--jinr-block b--jinr-iconbox"><div class="d--simple-iconbox6 ">
			<i class="jif jin-ifont-v2books" aria-hidden="true"></i>
			<div class="a--jinr-iconbox">
<p class="wp-block-paragraph">Python の設定ファイル管理では、TOML や INI ファイルもよく使用されます。以下も参考にしてください。</p>



<ul class="wp-block-list jinr-list">
<li><a href="https://tech.nkhn37.net/python-tomllib-basic/" target="_blank" rel="noreferrer noopener">tomllibでTOMLファイルを読み込む方法</a></li>



<li><a href="https://tech.nkhn37.net/python-configparser-basic/" target="_blank" rel="noreferrer noopener">configparserによる設定ファイル管理</a></li>
</ul>
</div>
		</div></section>



<h3 class="wp-block-heading jinr-heading d--bold">PyYAML のインストール</h3>



<p class="wp-block-paragraph">PyYAML を使用するにはインストールが必要です。以下のように pip でインストールをしてください。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""> pip install pyyaml</pre>



<h3 class="wp-block-heading jinr-heading d--bold" id="pyyamlによるyamlファイル管理の基本的な使い方">PyYAML の基本的な使い方</h3>



<p class="wp-block-paragraph">PyYAML の基本的な使い方を以降で紹介します。なお、PyYAML のバージョンは記事更新時点の <span class="jinr-d--text-color d--marker1 d--bold">PyYAML 6.0</span> で確認をしています。バージョンによっては挙動が異なる場合があることはあらかじめご了承ください。</p>



<p class="wp-block-paragraph">PyYAML を用いて YAML ファイルの入出力をする場合には、以下のようにします。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import yaml

yaml_data = {
    "WEB_SERVER": {"HOST": "192.168.1.100", "PORT": 80},
    "DB_SERVER": {"HOST": "192.168.1.200", "PORT": 3306},
}

# YAMLファイルの書き込み
with open("config.yml", "w") as yml_file:
    # 書き込み
    yaml.dump(yaml_data, yml_file)

# YAMLファイルの読み込み
with open("config.yml", "r") as yml_file1:
    # 読み込み
    load_data = yaml.load(yml_file1, Loader=yaml.SafeLoader)

print(type(load_data))
# 読み込んだ結果の参照
print(load_data["WEB_SERVER"])
print(load_data["WEB_SERVER"]["HOST"])
print(load_data["WEB_SERVER"]["PORT"])
print(load_data["DB_SERVER"])
print(load_data["DB_SERVER"]["HOST"])
print(load_data["DB_SERVER"]["PORT"])</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【実行結果】
&lt;class 'dict'>
{'HOST': '192.168.1.100', 'PORT': 80}
192.168.1.100
80
{'HOST': '192.168.1.200', 'PORT': 3306}
192.168.1.200
3306</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">【出力結果ファイル config.yml の内容】
DB_SERVER:
  HOST: 192.168.1.200
  PORT: 3306
WEB_SERVER:
  HOST: 192.168.1.100
  PORT: 80</pre>



<p class="wp-block-paragraph">例では、YAML ファイルに書き込む辞書データを用意し YAML ファイルの <code>config.yml</code> へ書き込みします。その後、書き込んだ YAML ファイルを読み込んで表示しています。</p>



<h4 class="wp-block-heading jinr-heading d--bold" id="yamlファイルの設定と書き込み">YAML ファイルの書き込み</h4>



<p class="wp-block-paragraph">PyYAML を用いてファイルを書き込む場合には以下のようにします。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import yaml

yaml_data = {
    "WEB_SERVER": {"HOST": "192.168.1.100", "PORT": 80},
    "DB_SERVER": {"HOST": "192.168.1.200", "PORT": 3306},
}

# YAMLファイルの書き込み
with open("config.yml", "w") as yml_file:
    # 書き込み
    yaml.dump(yaml_data, yml_file)</pre>



<p class="wp-block-paragraph">まず、PyYAML を使用するには <code>yaml</code> をインポートします。</p>



<p class="wp-block-paragraph">書き込むデータは辞書形式で用意し、YAML ファイルへの書き込みを行う場合には、<span class="jinr-d--text-color d--marker1 d--bold"><code>dump</code></span> 関数に書き込み対象の辞書を渡して書き込みを行います。</p>



<h4 class="wp-block-heading jinr-heading d--bold" id="yamlファイルの読み込み">YAML ファイルの読み込み</h4>



<p class="wp-block-paragraph">PyYAML でファイルを読み込む場合には以下のようにします。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># YAMLファイルの読み込み
with open("config.yml", "r") as yml_file1:
    # 読み込み
    load_data = yaml.load(yml_file1, Loader=yaml.SafeLoader)</pre>



<p class="wp-block-paragraph">YAML ファイルの読み込みを行う場合には、<span class="jinr-d--text-color d--marker1 d--bold"><code>load</code></span> 関数を使用します。<code>load</code> 関数にはファイルオブジェクトと <span class="jinr-d--text-color d--marker1 d--bold"><code>Loader</code></span> 引数で読み込み用のローダーを指定します。例では、<span class="jinr-d--text-color d--marker1 d--bold"><code>yaml.SafeLoader</code></span> を指定しています。</p>



<p class="wp-block-paragraph">なお、<code>Loader=yaml.SafeLoader</code> を省略した <span class="jinr-d--text-color d--marker1 d--bold"><code>safe_load</code></span> 関数を <code>load</code> 関数の代わりに使っても構いません。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># YAMLファイルの読み込み
with open("config.yml", "r") as yml_file1:
    # 読み込み
    load_data = yaml.safe_load(yml_file1)</pre>



<p class="wp-block-paragraph">なお、<code>Loader</code> には種類がありますが、<code>SafeLoader</code> は信頼できないデータソースを読み込みで推奨されるものです。基本こちらを使用するでよいかと思います。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">print(type(load_data))
# 読み込んだ結果の参照
print(load_data["WEB_SERVER"])
print(load_data["WEB_SERVER"]["HOST"])
print(load_data["WEB_SERVER"]["PORT"])
print(load_data["DB_SERVER"])
print(load_data["DB_SERVER"]["HOST"])
print(load_data["DB_SERVER"]["PORT"])</pre>



<p class="wp-block-paragraph">上記部分で読み込んだデータを確認していますが、<code>load</code> 関数では Python の辞書として読み込みが行われるため、簡単に設定情報にアクセスすることが可能です。</p>



<section class="wp-block-jinr-blocks-iconbox b--jinr-block b--jinr-iconbox"><div class="d--simple-iconbox5 ">
			<i class="jif jin-ifont-v2speaker" aria-hidden="true"></i>
			<div class="a--jinr-iconbox">
<p class="wp-block-paragraph">PyYAML 5.1 より前のバージョンであれば <code>yaml.load(yml_file)</code> のように YAML ファイルの読み込みが可能でしたがセキュリティ上の理由から非推奨となり、5.1以降では <code>Loader</code> 引数の設定をしないと警告が表示されます。</p>



<p class="wp-block-paragraph">また、PyYAML 6.0 では、<code>Loader</code> 引数の指定は必須となっており、指定しない場合はエラーとなります。</p>
</div>
		</div></section>



<h2 class="wp-block-heading jinr-heading d--bold">まとめ</h2>



<p class="wp-block-paragraph">Python で <span class="jinr-d--text-color d--marker1 d--bold">YAML</span> ファイルの管理をする際に使用する <span class="jinr-d--text-color d--marker1 d--bold">PyYAML</span> の基本的な使い方について解説しました。</p>



<p class="wp-block-paragraph">YAML は各種設定ファイル、ログ、データ保存等いろいろな用途で使用できます。PyYAML の使い方を覚えて YAML ファイルを有効活用してください。</p>



<section class="wp-block-jinr-blocks-iconbox b--jinr-block b--jinr-iconbox"><div class="d--simple-iconbox6 ">
			<i class="jif jin-ifont-v2books" aria-hidden="true"></i>
			<div class="a--jinr-iconbox">
<p class="wp-block-paragraph">PyYaml の公式ドキュメントは<a href="https://pyyaml.org/wiki/PyYAMLDocumentation" target="_blank" rel="noreferrer noopener">こちら</a>を参照してください。</p>
</div>
		</div></section>



<section class="wp-block-jinr-blocks-simplebox b--jinr-block-container"><div class="b--jinr-block b--jinr-box d--heading-box8  "><div class="a--simple-box-title d--bold">ソースコード</div><div class="c--simple-box-inner">
<p class="wp-block-paragraph">上記で紹介しているソースコードについては <a href="https://github.com/nkhn37/python-tech-sample-source/tree/main/python-libraries/yaml" target="_blank" rel="noreferrer noopener">GitHub</a> にて公開しています。参考にしていただければと思います。</p>
</div></div></section>


<section class="b--jinr-block b--jinr-blogcard d--blogcard-hover-up d--blogcard-style1 d--blogcard-mysite t--round "><div class="a--blogcard-label ef">あわせて読みたい</div><a class="o--blogcard-link t--round" href="https://tech.nkhn37.net/python-tech-summary-page/"><div class="c--blogcard-image"><img decoding="async" class="a--blogcard-img-src" width="128" height="72" src="https://tech.nkhn37.net/wp-content/uploads/2024/08/Python-Tech-Pythonプログラミングガイド_new1-640x360.jpg" alt="【Python Tech】プログラミングガイド" /></div><div class="a--blogcard-title d--bold">【Python Tech】プログラミングガイド</div></a></section>]]></content:encoded>
					
					<wfw:commentRss>https://tech.nkhn37.net/python-yaml-basic/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Disk: Enhanced  を使用したページ キャッシュ

Served from: tech.nkhn37.net @ 2026-07-23 00:51:36 by W3 Total Cache
-->