Добавьте ключ, значение в определенной позиции, передав позицию функции для изменения файла yaml - PullRequest
0 голосов
/ 20 января 2020

Содержимое файла yaml:

a: a1
b: 
  b1:
  - name: c1-name
    type:
      ctype:
        content: true

Я могу безопасно загрузить вышеуказанное содержимое с помощью модуля pyyaml и изменить данные (добавляемый ключ, значение) следующим образом

with open(filepath, 'r') as f:
    data = yaml.safe_load(f)
data['b]['b1'][0]['type']['ctype'][newkey to add]=value

Но я хочу сделать это для некоторых других файлов yaml, где положение для добавления нового ключа отличается от значения, поэтому я решил написать это в функции, отправив filepath, position и key, value в качестве аргументов следующим образом:

def modify_yaml(filepath,position,key,value):
    with open(filepath, 'r') as f:
        data = yaml.safe_load(f)
    data[position][key]=value
    return data

Но приведенный выше код не работает. Пожалуйста, помогите, если есть способ достичь этого.

"b": {
    "b1": [
      {
        "name": "c1-name",
        "type": {
          "ctype": {
            "content": true
          }
        }
      }
    ]
  }
...