I want to change only the attribute anotherName from the following yaml file with python.
test.yaml:
---
kind: test
scope: not far
spec:
  test1:
    options:
      - name: test.com
        anotherName: example.com
        empty: []
    groupOne: []
    emptyList:
      firstList: []
      secondList: []
Code (based on this answer)
import yaml
with open("test.yaml", 'r') as stream:
    try:
        loaded=yaml.safe_load(stream)
    except yaml.YAMLError as exc:
        print(exc)
    temp= loaded['spec']['test1']['options']
    for elem in temp:
        elem['anotherName']='somethingChanged'
with open("modified.yaml", 'w') as stream:
    try:
        yaml.dump(loaded, stream)
        print(loaded)
    except yaml.YAMLError as exc:
        print(exc)
The value has been changed, but the code change the order and the structure of the modified.yaml :
#First it misses the thre dashes
kind: test
scope: not far
spec:
  test1:
    emptyList:
      firstList: []
      secondList: []
    groupOne: []
    options:
    - anotherName: somethingChanged #then the order is changed
      empty: []
      name: test.com
 
     
    