[python] YAML

2922 ワード

YAMLは直感的にコンピュータで認識できるデータシーケンス化フォーマットであり、人間に読みやすく、スクリプト言語と対話しやすい.YAMLはXMLに似ていますが、構文はXMLよりずっと簡単で、配列やhash可能なデータに変換する場合には簡単で効果的です.YAML基本構文規則は次のとおりです.
  • 大文字小文字敏感
  • 階層関係
  • をインデントで表す.
  • インデント時にTabキーは使用不可、スペース
  • のみ使用可能
  • インデントされたスペースの数は重要ではありません.同じレベルの要素の左側を揃えるだけで
  • になります.
  • #  コメントの現在の行を示す
  • YAMLがサポートするデータ構造は3種類あります.
  • オブジェクト:キー値ペアの集合であり、マッピング/ハッシュ/辞書(dictionary)
  • とも呼ばれる.
  • 配列:シーケンス/リスト
  • とも呼ばれる順序付けされた値のセット
  • 純量(scalars):単一で再分割できない値
  • ≪オブジェクト|Objects|emdw≫:オブジェクトのキー値ペアのセットで、コロン構造で表されます.
    animal: pets
    連語線の先頭の行のセットで、配列を構成します.
    - Cat
    - Dog
    - Goldfish

    オブジェクトと配列を組み合わせて使用し、複合構造を形成できます.
    languages:
     - Ruby
     - Perl
     - Python 
    websites:
     YAML: yaml.org 
     Ruby: ruby-lang.org 
     Python: python.org 
     Perl: use.perl.org

    文字列のデフォルトでは、引用符は使用されません.
         str:これは1行の文字列です
    文字列にスペースまたは特殊文字が含まれている場合は、引用符で囲む必要があります.
        str:'内容:文字列'
    python yamlの使用 
    Excample.iniファイルは次のとおりです.
    house:
      family:
        name: Doe
        parents:
          - John
          - Jane
      address:
        number: 34
        street: Main Street
    import yaml
    f = open('example.ini',encoding="utf-8")
    x = yaml.load(f) #    ,      
    print(x)
    print(x["name"])
    print("---------")
    
    aproject = {'name': 'Silenthand Olleander',
                'race': 'Human',
                'traits': ['ONE_HAND', 'ONE_EYE']
                }
    
    ret = yaml.dump(aproject)#   python     yaml  
    print(ret)
    
    
    aproject = ["a","b","c"]
    ret = yaml.dump(aproject)
    print(ret)
    
    aproject = ("a","b","c")
    ret = yaml.dump(aproject)
    print(ret)
    
    aproject = {"a":1,"b":2}
    ret = yaml.dump(aproject)
    print(ret)
    
    

    result:
    {'house': {'family': {'name': 'Doe', 'parents': ['John', 'Jane']}, 'address': {'number': 34, 'street': 'Main Street'}}}
    ---------
    name: Silenthand Olleander
    race: Human
    traits: [ONE_HAND, ONE_EYE]
    
    [a, b, c]
    
    [a, b, c]
    
    {a: 1, b: 2}
    

    yaml.dumpが受信した2番目のパラメータは必ず開いているテキストファイルまたはバイナリファイルで、yaml.dumpは生成したyamlドキュメントをファイルに書きます.
    import yaml
    
    aproject = {'name': 'Silenthand Olleander',
                'race': 'Human',
                'traits': ['ONE_HAND', 'ONE_EYE']
                }
    f = open(r'E:\AutomaticTest\Test_Framework\config\config.yml','w')
    print(yaml.dump(aproject,f))

    yaml.dump_all()複数のセグメントを1つのファイルに出力
    import yaml
    
    obj1 = {"name": "James", "age": 20}
    obj2 = ["Lily", 19]
    
    with open(r'E:\AutomaticTest\Test_Framework\config\config.yml', 'w') as f:
        yaml.dump_all([obj1, obj2], f)

    ref: link