Python

【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:\test\input"
  data["SETTING"]["PATH"]["outputpath"] = "C:\test\output"
  # 別名でファイル保存
  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"
エンジニアの転職ならこれ!

【第二新卒向け】マイナビジョブ20's

マイナビジョブ20'sは、20代・第二新卒・既卒向けの転職エージェントです。

▼こんな方におすすめ
・はじめて転職しようと思っている
・転職できるだけのスキルが自分にあるか不安
・手厚いサポートを受けたい

【フリーランス向け】 Midworks

Midworksは豊富な案件と「フリーランス」と「正社員」の良いとこ取りをした働き方を実現する手厚い保障が特徴です。

▼こんな方におすすめ
・現在正社員でフリーランスになろうか悩んでいる
・フリーランスとして働いているが、先行きが不安がある  (安定的な案件確保や保障など)
・自分の市場価値を知りたい、見合った案件で参画したい
・今後のキャリアビジョンを踏まえて案件を選びたい