Writing to a Yaml file

Viewed 328

I am using python to write in to a YAML file. But I am unable to write it in a specific format as I require

  awesome_people:
    name: Awesome People
    entities:
      - device_tracker.dad_smith
      - device_tracker.mom_smith

I am getting problem in the entities part, as I am unable to create a list with proper indents as in the above YAML.

How can I create the above exact format?

1 Answers

You can do this with ruamel.yaml, setting the sequence indent from default two to four, and the offset of the dash+space (which need a minimum indent of two), from zero to two. You should leave the mapping indent unchanged from the default:

import sys
import ruamel.yaml

ent = ['device_tracker.dad_smith', 'device_tracker.mom_smith']
data = dict(awesome_people = dict(name='Awesome People', entities=ent))

yaml_str = """\
"""

yaml = ruamel.yaml.YAML()
yaml.indent(sequence=4, offset=2)
# print(data)
yaml.dump(data, sys.stdout)

which gives:

awesome_people:
  name: Awesome People
  entities:
    - device_tracker.dad_smith
    - device_tracker.mom_smith
Related