Làm cách nào để ghi dữ liệu ở định dạng YAML trong một tệp?


Câu trả lời:


195
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)

Các default_flow_style=Falsetham số là cần thiết để sản xuất các định dạng mà bạn muốn (kiểu dòng chảy), nếu không cho các bộ sưu tập lồng nhau nó tạo ra khối phong cách:

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

14
default_flow_style = True thực hiện ngược lại như đã nêu trong câu trả lời dưới đây!
encc

Có một lợi ích của việc sử dụng withở đây trái ngược với một lớp lót?
src

2
@src withđảm bảo tệp được đóng đúng cách khi không còn cần thiết
kbolino

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

76

Liên kết đến tài liệu PyYAML cho thấy sự khác biệt cho default_flow_styletham số. Để ghi nó vào một tệp ở chế độ khối (thường dễ đọc hơn):

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)

sản xuất:

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

Xem Munch , stackoverflow.com/questions/52570869/ từ import yaml; from munch import munchify; f = munchify(yaml.safe_load(…));print(f.B.C)
Hans Ginzel
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.