Python操作Yamlファイル
10929 ワード
最近Python 3を使い始めました.x,今後は特に説明はないが,PythonはPython 3を代表する.x
最近コードを見ているとYaml-Yet Another Markup Language:別のタグ言語を使う人がいることがわかりました
好奇心があれば、持ってきてみてください.後続のプロジェクトで実践してみてほしい.
概要
プログラミングはプロファイルを書くのが避けられないし、どのようにプロファイルを書くかも学問です.
YAMLはプロファイルを書くための言語で、非常に簡潔で強力で、JSONフォーマットよりはるかに便利です.
YAMLはpython言語にPyYAMLインストールパッケージがあります.
YAML言語(発音/ˈjæməl/)の設計目標は,人間の読み書きを容易にすることである.実質的には汎用的なデータシリアル化フォーマットです.
基本的な構文規則は次のとおりです.
1、大文字と小文字が敏感
2、階層関係をインデントで表す
3、インデント時にTabキーは使用できません.スペースのみ使用できます.
4、インデントされたスペースの数は重要ではありません.同じレベルの要素が左側に揃えばいいです.
5、
YAMLがサポートするデータ構造は3種類あります.
1、オブジェクト:キー値ペアの集合で、マッピング/ハッシュ/辞書(dictionary)とも呼ばれる
2、配列:シーケンス/リスト(list)と呼ばれる順序で並べられた値のセット
3、純量(scalars):単一の、再分割できない値.文字列、ブール値、整数、浮動小数点数、Null、時間、日付
1.パッケージのインストール
2. yamlの使用
3.プロファイル情報の取得
4.構成パラメータの変更
転載先:https://www.cnblogs.com/supery007/p/11263702.html
最近コードを見ているとYaml-Yet Another Markup Language:別のタグ言語を使う人がいることがわかりました
好奇心があれば、持ってきてみてください.後続のプロジェクトで実践してみてほしい.
概要
プログラミングはプロファイルを書くのが避けられないし、どのようにプロファイルを書くかも学問です.
YAMLはプロファイルを書くための言語で、非常に簡潔で強力で、JSONフォーマットよりはるかに便利です.
YAMLはpython言語にPyYAMLインストールパッケージがあります.
YAML言語(発音/ˈjæməl/)の設計目標は,人間の読み書きを容易にすることである.実質的には汎用的なデータシリアル化フォーマットです.
基本的な構文規則は次のとおりです.
1、大文字と小文字が敏感
2、階層関係をインデントで表す
3、インデント時にTabキーは使用できません.スペースのみ使用できます.
4、インデントされたスペースの数は重要ではありません.同じレベルの要素が左側に揃えばいいです.
5、
#
はコメントを表し、この文字から行末まで解析器に無視されます.これはpythonのコメントと同じです.YAMLがサポートするデータ構造は3種類あります.
1、オブジェクト:キー値ペアの集合で、マッピング/ハッシュ/辞書(dictionary)とも呼ばれる
2、配列:シーケンス/リスト(list)と呼ばれる順序で並べられた値のセット
3、純量(scalars):単一の、再分割できない値.文字列、ブール値、整数、浮動小数点数、Null、時間、日付
1.パッケージのインストール
pip install pyyaml
2. yamlの使用
apiVersion: apps/v1
kind: Deployment
metadata:
name: linux-node02
namespace: yaml-demo
spec:
replicas: 1
selector:
matchLabels:
app: podinfo
template:
metadata:
labels:
app: podinfo
spec:
containers:
- image: quay.io/stefanprodan/podinfo:0.3.0
name: podinfod
ports:
- containerPort: 9898
3.プロファイル情報の取得
import yaml
import os
#
filePath = os.path.dirname(__file__)
print(filePath)
#
fileNamePath = os.path.split(os.path.realpath(__file__))[0]
print(fileNamePath)
#
yamlPath = os.path.join(fileNamePath,'config.yaml')
print(yamlPath)
# yaml
with open(yamlPath,'r',encoding='utf-8') as f:
# print(f.read())
result = f.read()
x = yaml.load(result,Loader=yaml.FullLoader)
print(type(x))
print(x)
C:\Users\yulianhui\AppData\Local\Programs\Python\Python36\python.exe D:/dev/PYSCRIPTS/yaml /s1.py
D:/dev/PYSCRIPTS/yaml
D:\dev\PYSCRIPTS\yaml
D:\dev\PYSCRIPTS\yaml \config.yaml
<class 'dict'>
{'apiVersion': 'apps/v1', 'kind': 'Deployment', 'metadata': {'name': 'linux-node02', 'namespace': 'yaml-demo'}, 'spec': {'replicas': 1, 'selector': {'matchLabels': {'app': 'podinfo'}}, 'template': {'metadata': {'labels': {'app': 'podinfo'}}, 'spec': {'containers': [{'image': 'quay.io/stefanprodan/podinfo:0.3.0', 'name': 'podinfod', 'ports': [{'containerPort': 9898}]}]}}}}
4.構成パラメータの変更
import yaml
import os
#
filePath = os.path.dirname(__file__)
print(filePath)
#
fileNamePath = os.path.split(os.path.realpath(__file__))[0]
print(fileNamePath)
#
yamlPath = os.path.join(fileNamePath,'config.yaml')
print(yamlPath)
# yaml
with open(yamlPath,'r',encoding='utf-8') as f:
# print(f.read())
result = f.read()
x = yaml.load(result,Loader=yaml.FullLoader)
print(type(x))
print(x)
print(x['metadata']['name'])
#
x['metadata']['name'] = 'linux-node02'
print(x)
with open(yamlPath,'w',encoding='utf-8') as w_f:
#
yaml.dump(x,w_f)
転載先:https://www.cnblogs.com/supery007/p/11263702.html