【Python】YAMLファイルの読み込み・書き込み

Pythonのプロジェクトなどで拡張子がyamlのYAMLファイルをよく見かけます。YAMLは主に設定ファイルとして利用されています。Dockerなどでも利用されているようです。

JSONと似ていますが、YAMLのほうが見やすいですね。ちなみにYAMLとJSONを変換することのできるサイトもあります。

この記事ではGoogleColab上で実行する方法を記載

YAMLファイルの読み込み

!pip install pyymal

import yaml
import io
import os

targetDirecotory = "/content/drive/MyDrive/test/output"
fileName = "test.yaml"

with open(os.path.join(targetDirecotory, fileName)) as f:
  data = yaml.safe_load(f)
  print(data["SETTING"]["PATH"]["inputpath"])

YAMLファイルの書き込み

!pip install pyymal

import yaml
import io
import os

outputDirecotory = "/content/drive/MyDrive/test/output"
fileName = "test.yaml"

with open(os.path.join(outputDirecotory, fileName), "w") as f:
  data = {
      "SETTING":{
          "PATH":{
          "inputpath":"/content/drive/MyDrive/test/input",
          "outputpath":"/content/drive/MyDrive/test/output"
          }
      }
  }
  yaml.dump(data, f)

出力結果

SETTING:
  PATH:
    inputpath: /content/drive/MyDrive/test/input
    outputpath: /content/drive/MyDrive/test/output

YAMLファイルを読み込んで一部編集し、別名で保存

読み込みと書き込みの合わせ技です

# yamlの更新(上書き)
!pip install pyymal

import yaml
import io
import os

outputDirecotory = "/content/drive/MyDrive/test/output"
fileName = "test.yaml"
newfileName = "newtest.yaml"

with open(os.path.join(outputDirecotory, fileName)) as f:
  # ファイル読み込み
  data = yaml.safe_load(f)
  # データ編集
  data["SETTING"]["PATH"]["inputpath"] = "C:testinput"
  data["SETTING"]["PATH"]["outputpath"] = "C:testoutput"
  # 別名でファイル保存
  with io.open(os.path.join(outputDirecotory, newfileName), "w") as newFile:
    yaml.dump(data,newFile)

別ファイルに保存されていることが確認できました

SETTING:
  PATH:
    inputpath: "C:test\input"
    outputpath: "C:test\output"

Leave a Reply

Your email address will not be published. Required fields are marked *