Bir dosyaya YAML formatında nasıl veri yazabilirim?


Yanıtlar:


197
import yaml

data = dict(
    A = 'a',
    B = dict(
        C = 'c',
        D = 'd',
        E = 'e',
    )
)

with open('data.yml', 'w') as outfile:
    yaml.dump(data, outfile, default_flow_style=False)

default_flow_style=FalseParametre aksi yuvalanmış koleksiyonları için bu blok tarzı üretir, siz (akış tarzı) istediğiniz biçimi üretmek için gereklidir:

A: a
B: {C: c, D: d, E: e}

14
default_flow_style = True, aşağıdaki yanıtta belirtildiği gibi tam tersini yapar!
encc

withTek astar yerine burada kullanmanın bir yararı var mı ?
src

2
@src with, artık gerekmediğinde dosyanın düzgün şekilde kapatılmasını sağlar
kbolino

Bkz Munch , stackoverflow.com/questions/52570869/… import yaml; from munch import munchify; f = munchify(yaml.safe_load(…));print(f.B.C)
Hans Ginzel

76

default_flow_styleParametre için farkı gösteren PyYAML belgelerine bağlantı . Blok modunda bir dosyaya yazmak için (genellikle daha okunabilir):

d = {'A':'a', 'B':{'C':'c', 'D':'d', 'E':'e'}}
with open('result.yml', 'w') as yaml_file:
    yaml.dump(d, yaml_file, default_flow_style=False)

üretir:

A: a
B:
  C: c
  D: d
  E: e

Bkz Munch , stackoverflow.com/questions/52570869/… import yaml; from munch import munchify; f = munchify(yaml.safe_load(…));print(f.B.C)
Hans Ginzel
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.