Как прочитать данные из вложенного файла YAML в python? - PullRequest
0 голосов
/ 25 марта 2020

Например, у меня есть файл swagger.yaml, и я хочу прочитать некоторую переменную из него. Например, этот файл: https://editor.swagger.io/

Ниже приведен фрагмент файла. Можно получить например. значения «параметров»? Лучше всего назначить их некоторым переменным.

paths:
  /pet:
    post:
      tags:
      - "pet"
      summary: "Add a new pet to the store"
      description: ""
      operationId: "addPet"
      consumes:
      - "application/json"
      - "application/xml"
      produces:
      - "application/xml"
      - "application/json"
      parameters:
      - in: "body"
        name: "body"
        description: "Pet object that needs to be added to the store"
        required: true
        schema:
          $ref: "#/definitions/Pet"
      responses:
        405:
          description: "Invalid input"
      security:
      - petstore_auth:
        - "write:pets"
        - "read:pets"

У меня есть этот код:

import yaml

path_to_yaml = '../data/swagger.yaml'

with open(path_to_yaml) as f:
    dataMap = yaml.safe_load(f)
print(yaml.dump(dataMap, default_flow_style=False))

Ответы [ 2 ]

0 голосов
/ 25 марта 2020

Я решил эту проблему, установив scalpl https://yaml.readthedocs.io/en/latest/install.html

, чтобы получить, например. значение имени ("тело"):

with open(file.yaml) as f:
    dataMap = yaml.safe_load(f)
proxy = Cut(dataMap)
print(proxy['paths.pet.post.parameters.name']

результаты:

>>> body 
0 голосов
/ 25 марта 2020

Рассмотрите возможность использования словаря для доступа к значениям параметров.

Для этой установки PyYAML

import yaml
yaml_as_python_dict = yaml.load(yaml_as_string_or_bytes)

А затем просто получить доступ через клавиши для получения значения

Например,

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
print "dict['Name']: ", dict['Name']
print "dict['Age']: ", dict['Age']
...