Python学習ノートのYamlの紹介と使用
目次Yamlの紹介とインストール Yamlの紹介 Yamlプロファイル Yamlインストール 辞書とリストの操作 辞書 リスト 辞書とリストが互いにネストされている 辞書ネスト辞書 ディクショナリネストリスト リストネストリスト リストネスト辞書 複数のyamlドキュメントを読み込む Yamlパッケージ Yamlを使用してappiumパラメータを構成 Yamlの紹介とインストール
Yamlの紹介Yamlは、すべてのプログラミング言語で使用可能な友好的なデータシーケンス化標準 である.文法は他の高次言語と類似しており、辞書、リスト、その他の基本データ型の形態 を簡単に表現することができる.
Yaml設定フォーマットYamlはコメントをサポートし、「#」で カッコなどの記号を強要する必要はありません 階層をインデントで区別し、Pythonと類似 Yamlインストール
辞書とリストの操作
辞書
ymlという接尾辞のファイルを作成して入力します注意、コロンの後ろに必ずスペースがあります Pythonコードでymlファイルを読み込む
リスト#リスト#
ymlファイルに書き込む
そして引き続きPythonでymlファイルを読み込みます
辞書とリストは互いにネストされています
辞書ネスト辞書
Ymlファイルで編集
Pythonでファイルを読み込む
辞書ネストリスト
Ymlファイルで編集
Pythonでファイルを読み込む
リストネストリスト
Pythonでファイルを読み込む
リストネスト辞書
Pythonでファイルを読み込む
複数のyamlドキュメントを読み込む
以上はいずれも1つのドキュメントを読み取るものであり、yamlは
Pythonでファイルを読み込む
Yamlパッケージ
utilsディレクトリを作成し、Yamlutilを作成します.pyファイルは、ツールクラス
このツールクラスを呼び出してymlファイルを読み込んでみます
単一ドキュメントのymlを読み込む
単一ドキュメントのymlを読み込む
Yamlを使用したappiumパラメータの構成
既にymlファイルを読み込むツールクラスYamlReaderが作成されているので、ymlを作成してappiumに書き込む接続構成だけで済みます
ツールクラスYamlReaderを呼び出してymlファイルを読み込むとよい
Yamlの紹介
Yaml設定フォーマット
pip install PyYaml
辞書とリストの操作
辞書
ymlという接尾辞のファイルを作成して入力します
name: "test_yaml"
result: "success"
import yaml
with open("yaml_demo.yml", "r") as f:
data = yaml.safe_load(f)
print(data)
#
{'name': 'test_yaml', 'resule': 'success'}
リスト#リスト#
ymlファイルに書き込む
- "a"
- "b"
- "c"
そして引き続きPythonでymlファイルを読み込みます
import yaml
with open("yaml_demo.yml", "r") as f:
data = yaml.safe_load(f)
print(data)
#
['a', 'b', 'c']
辞書とリストは互いにネストされています
辞書ネスト辞書
Ymlファイルで編集
person1:
name: "connor"
age: "18"
person2:
name: "amy"
age: "20"
Pythonでファイルを読み込む
import yaml
with open("yaml_demo.yml", "r") as f:
data = yaml.safe_load(f)
print(data)
#
{'person1': {'name': 'connor', 'age': '18'}, 'person2': {'name': 'amy', 'age': '20'}}
辞書ネストリスト
Ymlファイルで編集
person1:
- "connor"
- "18"
person2:
- "Amy"
- "20"
Pythonでファイルを読み込む
import yaml
with open("yaml_demo.yml", "r") as f:
data = yaml.safe_load(f)
print(data)
#
{'person1': ['connor', '18'], 'person2': ['Amy', '20']}
リストネストリスト
-
- "a"
- "b"
- "c"
-
- "e"
- "f"
- "d"
Pythonでファイルを読み込む
import yaml
with open("yaml_demo.yml", "r") as f:
data = yaml.safe_load(f)
print(data)
#
[['a', 'b', 'c'], ['e', 'f', 'd']]
リストネスト辞書
- username: "connor"
- age:
A: "20"
B: "30"
Pythonでファイルを読み込む
import yaml
with open("yaml_demo.yml", "r") as f:
data = yaml.safe_load(f)
print(data)
#
[{'username': 'connor'}, {'age': {'A': '20', 'B': '30'}}]
複数のyamlドキュメントを読み込む
以上はいずれも1つのドキュメントを読み取るものであり、yamlは
---
を追加することで複数のドキュメントを分割することができ、Pythonの読み取り方法はyaml.safe_load_all()
を用いる.---
: "connor"
: "123456"
---
: "AMY"
: "456789"
Pythonでファイルを読み込む
import yaml
with open("yaml_demo.yml", "r", encoding="utf8") as f: # yml , encoding="utf8"
data = yaml.safe_load(f) # generator
for i in data:
print(i) #
#
{' ': 'connor', ' ': '123456'}
{' ': 'AMY', ' ': '456789'}
Yamlパッケージ
utilsディレクトリを作成し、Yamlutilを作成します.pyファイルは、ツールクラス
YamlReader
を定義し、初期化時にymlファイルが存在するかどうかを判断し、単一のドキュメントを読み取る方法read_data
と複数のドキュメントを読み取る方法read_all
を定義する必要があります.実装コード:import os
import yaml
# 1.
class YamlReader:
# 2. ,
def __init__(self, yamlfile):
if os.path.exists(yamlfile):
self.yamlf = yamlfile
else:
raise FileNotFoundError(" ")
self._data = None #
self._data_all = None #
# , Yaml 、
def read_data(self):
if not self._data: #
with open(self.yamlf, "r", encoding="utf8") as f:
self._data = yaml.safe_load(f)
return self._data
def read_all(self):
if not self._data_all: #
with open(self.yamlf, "r", encoding="utf8") as f:
self._data_all = list(yaml.safe_load_all(f))
return self._data_all
このツールクラスを呼び出してymlファイルを読み込んでみます
from utils.Yamlutil import YamlReader
# yamutils,
readr = YamlReader(yamlfile="yaml_demo.yml")
単一ドキュメントのymlを読み込む
# ,
data = readr.read_data() #
print(data)
#
[['a', 'b', 'c'], ['e', 'f', 'd']]
単一ドキュメントのymlを読み込む
# ,
data = readr.read_all() #
print(data)
#
[[['a', 'b', 'c'], ['e', 'f', 'd']], {' ': 'connor', ' ': '123456'}, {' ': 'AMY', ' ': '456789'}]
Yamlを使用したappiumパラメータの構成
既にymlファイルを読み込むツールクラスYamlReaderが作成されているので、ymlを作成してappiumに書き込む接続構成だけで済みます
platformName: "Android"
platformVersion: "10"
deviceName: "CLT-AL00"
appPackage: "com.gotokeep.keep"
appActivity: "com.gotokeep.keep.refactor.business.main.activity.MainActivity"
ツールクラスYamlReaderを呼び出してymlファイルを読み込むとよい
from appium import webdriver
from utils.Yamlutil import YamlReader
import time
reader = YamlReader("../conf/appium_config.yaml") # yml
desired = reader.read_data()
# print(desired)
driver = webdriver.Remote("http://localhost:4723/wd/hub", desired)
# time.sleep(5)
driver.close()