Модуль ruamel.yaml, сделать комментарий в yaml файл

vit

Новичок
Пользователь
Авг 11, 2021
3
0
1
Привет друзья !

Подскажите решить одну проблему
Делаю скрипт который добавляет в yaml файл новый item через модуль ruamel.yaml . item добавляется корректно проблема заключается в добавлении комментария к новому айтему. В функции add_user вычисляю число айтема number = len(environment) это число последнего айтема что был добавлен в list, передаю в следущую функцию commnet_user что бы прокоментировать новый item, но это не срабатывает не пойму почему модуль ruamel.yaml не хочет брать это число с переменной number и добавить комментарий к новому айтему. Если я укажу число в функцию commnet_user(5) например то так работает . Не могу понять что не так с переменной number = len(environment) .

Помогите решить данную проблему
Заранее благодарен !

Прилагаю скрипт
test.yaml

Код:
list:
- itme1
- item2
- user@example.com

======================
Код:
import sys
import ruamel.yaml

yaml = ruamel.yaml.YAML()
f = open("test.yaml", "r")
data = yaml.load(f)
environment = data['list']

def add_user(user_name):
    global number
    environment.append(user_name)
    number = len(environment)

def commnet_user(number):
    environment.yaml_add_eol_comment('comment 4', key=number)
    with open('test.yaml','w') as out_yamlfile:
        yaml.dump(data, out_yamlfile)

add_user('user@example.com')
commnet_user(number)
 
Последнее редактирование:

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 599
464
83
ваш скрипт не работает, на отступы ругается...
как вставить код, как код, подробнее тут как задать вопрос
 

vit

Новичок
Пользователь
Авг 11, 2021
3
0
1
ваш скрипт не работает, на отступы ругается...
как вставить код, как код, подробнее тут как задать вопрос
Здравствуйте regnor
Спасибо, сделал правку
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Если я укажу число в функцию commnet_user(5) например то так работает . Не могу понять что не так с переменной number = len(environment) .
Проблема в том, что индексы в списке начинаются с 0, и последний элемент списка находится по индексу длина списка - 1.
Чтобы функция commnet_user() работала с переменной number нужно заменить эту строку кода
Python:
environment.yaml_add_eol_comment('comment 4', key=number)
на такую
Python:
environment.yaml_add_eol_comment('comment 4', key=number - 1)
 

vit

Новичок
Пользователь
Авг 11, 2021
3
0
1
Проблема в том, что индексы в списке начинаются с 0, и последний элемент списка находится по индексу длина списка - 1.
Чтобы функция commnet_user() работала с переменной number нужно заменить эту строку кода
Python:
environment.yaml_add_eol_comment('comment 4', key=number)
на такую
Python:
environment.yaml_add_eol_comment('comment 4', key=number - 1)

Спасибо большое stud_55 ??!!! Все получилось
 

Форум IT Специалистов