Python & ldquo; yaml & rdquo; модуль конвертации неожиданного YAML из формата JSON

Для Mac (High Sierra) установите virtualenv в python3 и создайте virtualenv для python2:

$ python3 -m virtualenv --python=python2 vp27
$ source vp27/bin/activate
(vp27)$ python --version
Python 2.7.14
0
задан vsmahajan 18 January 2019 в 12:04
поделиться

2 ответа

Изменение порядка в PyYAML препятствует редактированию в оба конца в файлах YAML, и ряд других анализаторов пытались это исправить.

Стоит обратить внимание на Ruamel.yaml , который говорит на своей обзорной странице :

block style and key ordering are kept, so you can diff the round-tripped source

Пример кода, предоставленный автором, демонстрирует это: [ 117]

import sys
import ruamel.yaml as yaml

yaml_str = """\
3: abc
conf:
    10: def
    3: gij     # h is missing
more:
- what
- else
"""

data = yaml.load(yaml_str, Loader=yaml.RoundTripLoader)
data['conf'][10] = 'klm'
data['conf'][3] = 'jig'
yaml.dump(data, sys.stdout, Dumper=yaml.RoundTripDumper)
will give you:

3: abc
conf:
  10: klm
  3: jig       # h is missing
more:
- what
- else

Это более подробно обсуждается здесь . Он описывается как замена для PyYAML, поэтому с ним будет легко экспериментировать в вашей среде.

0
ответ дан Mazerunner72 18 January 2019 в 12:04
поделиться

Используйте default_flow_style=False

Например:

import yaml                                                                     

job_template = [                                                                
  {                                                                             
    "job-template": {                                                           
      "name": "{name}_job",                                                     
      "description": "job description",                                         
      "project-type": "multibranch",                                            
      "number-to-keep": 30,                                                     
      "days-to-keep": 30,                                                       
      "scm": [                                                                  
        {                                                                       
          "git": {                                                              
            "url": "{git_url}"                                                  
          }                                                                     
        }                                                                       
      ]                                                                         
    }                                                                           
  }                                                                             
]                                                                               

yaml.dump(job_template, open("job_template.yaml", "w"), default_flow_style=False)  
0
ответ дан Rakesh 18 January 2019 в 12:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: