簡単な紹介
YAML言語の設計目標は、人間の読者を容易にすることです。それは本質的に、ユニバーサル・シリアル・データ・フォーマットです。次のようにその基本的な構文規則は以下のとおりです。
- 大文字と小文字を区別する
- 使用インデント階層
- 空間のみの使用が可能にインデントをTabキーを使用することはできません。
- インデントのスペースの数は長い左の要素が同じレベルに整列されているほど、重要ではありません。
- 「#」は発言を表し、パーサによって無視されます
YAMLのデータ構造は3でサポートされています
- オブジェクト:キーのセット、またマッピング(マッピング)として知られている/ハッシュ(ハッシュ)/ディクショナリ(辞書)
- 配列:値のセットが順に配置され、また、公知の配列(シーケンス)/リスト(一覧表)
- スカラー(スカラー):個々の値を分割することができません
オープン関数
open()関数は、オブジェクト関連する方法は、読み取り、書き込み、それを呼び出すことができるファイルを作成し、ファイルを開くために使用されています
関数のシンタックス:
open(name[, mode[, buffering]])
パラメータ:
-
名前:アクセスしたいファイルの名前を含む文字列値。
-
モード:読み取り専用、書き込み、追記など:モードは、開いているファイルのモードを決定します。次のようにすべての可能な値の完全なリストを参照してください。このパラメータは必須ではありませんが、デフォルトのファイルが読み取り専用アクセスモード(R)。
-
バッファリング:バッファリングの値が0に設定されている場合は、ストレージが存在します。バッファリングの値が1を取る場合は、行がファイルにアクセスするために登録します。値は、この記憶領域のバッファサイズであることを示し、バッファリングの1以上の整数大きい場合。もし否定、システムのデフォルトの格納領域のバッファサイズ
ファイルの異なるモードの完全なリストを開きます。
モード | 説明 |
---|---|
R | 読み取り専用モードでファイルを開きます。ポインタファイルは、ファイルの先頭に配置されます。これはデフォルトのモードです |
RB | 読み取り専用のバイナリ形式のファイルを開きます。ファイルポインタはファイルの先頭に配置されます。これはデフォルトのモードです |
R + | 読み込みおよび書き込み用のファイルを開きます。ファイルポインタはファイルの先頭に配置されます |
RB + | バイナリ形式の読み込みと書き込みのためにファイルを開きます。ファイルポインタはファイルの先頭に配置されます |
ワット | 書き込み専用ファイルを開きます。ファイルが既に存在する場合は、ファイルを開いている最初から編集を開始、元のコンテンツが削除されます。ファイルが存在しない場合は、新しいファイルを作成します |
WB | 唯一のバイナリ形式で記述するためのファイルを開きます。ファイルが既に存在する場合は、ファイルを開いている最初から編集を開始、元のコンテンツが削除されます。ファイルが存在しない場合は、新しいファイルを作成します |
+ W | 読み込みおよび書き込み用のファイルを開きます。ファイルが既に存在する場合は、ファイルを開いている最初から編集を開始、元のコンテンツが削除されます。ファイルが存在しない場合は、新しいファイルを作成します |
WB + | バイナリ形式の読み込みと書き込みのためにファイルを開きます。ファイルが既に存在する場合は、ファイルを開いている最初から編集を開始、元のコンテンツが削除されます。ファイルが存在しない場合は、新しいファイルを作成します |
A | 追記用のファイルを開きます。ファイルが既に存在する場合、ファイルポインタはファイルの末尾に配置されます。言い換えれば、新しいコンテンツが既存のコンテンツの後に書き込まれます。ファイルが存在しない場合は、書き込み用に新しいファイルを作成します |
から | 追加用のバイナリ形式のファイルを開きます。ファイルが既に存在する場合、ファイルポインタはファイルの末尾に配置されます。言い換えれば、新しいコンテンツが既存のコンテンツの後に書き込まれます。ファイルが存在しない場合は、書き込み用に新しいファイルを作成します |
+ | 読み込みおよび書き込み用のファイルを開きます。ファイルが既に存在する場合、ファイルポインタはファイルの末尾に配置されます。ファイルを開いたときにはモードを追加します。ファイルが存在しない場合は、読み込みおよび書き込み用の新しいファイルを作成します |
AB + | 追加用のバイナリ形式のファイルを開きます。ファイルが既に存在する場合、ファイルポインタはファイルの末尾に配置されます。ファイルが存在しない場合は、読み込みおよび書き込み用の新しいファイルを作成します |
環境設定:
インストールPyYAMLと:のpython -mピップPyYAMLとインストール
読んだ
import yaml
# 读取yaml文件
class Getyaml():
def __init__(self, path, param=None):
self.path = path # 文件路径
self.param = param # 读取信息的key,不传默认获取所有数据
# 获取yaml文件中的数据
def get_data(self):
with open(self.path, 'rb') as y:
cont = y.read() # 获取yaml文件中的所有信息
yaml.warnings({'YAMLLoadWarning': False}) # 禁用加载器warnings报警
cf = yaml.load(cont) # 将bytes格式转成dict格式
y.close() # 关闭文件
if self.param == None:
return cf # 返回所有数据
else:
return cf.get(self.param) # 获取键为param的值
if __name__ == "__main__":
p = "Z:\\readwrite.yaml"
print(Getyaml(path=p, param="key").get_data())
#注:重複キーYAMLファイルが読み込まれた場合は書面による最新のを読みます
書く
import yaml
# 写入yaml文件
class Writeyaml():
def __init__(self, path, message):
self.path = path
self.message = message
def echo_data(self):
with open(self.path, "a+", encoding="utf-8") as f:
# 注:此模式为追加模式,若想直接重写则将open函数中的模式'a+'改为'w'
yaml.dump(self.message, f)
f.close()
if __name__ == "__main__":
m = {"key1": "value1", "key2": "value2", "dict_1": {"dict_2": {"dict_3": ["test1", "test2", "test3"]}}}
p = "Z:\\readwrite.yaml"
Writeyaml(path=p, message=m).echo_data()
次のように複数の追加の結果は以下のとおりです。
その#のPyYAMLとライブラリを除いて、ファイルには、YAMLを動作させることができる、PIP ruamelモジュールの取り付け方法:のpython -mピップruamel.yamlをインストール