Как удалить значение из указанного ключа c в YAML с помощью Python? - PullRequest
0 голосов
/ 12 февраля 2020

Я успешно разработал добавление значения к ключу в YAML с помощью Python и начал работать с обратным ему со ссылкой на код для добавления. Вот мое предложение о том, как работает код:

connected_guilds:
- 1
- 2

после запуска кода файл YAML должен быть изменен на:

connected_guilds:
- 1

Вот мой код, однако это не так не сработало, все закончилось полностью, а остальное - -1 в первом примере YAML, который я приложил.

with open('guilds.yaml', 'r+') as guild_remove:
    loader = yaml.safe_load(guild_remove)

    content = loader['connected_guilds']

    for server in content:
        if server != guild_id:
            continue
        else:
            content.remove(guild_id)

            guild_remove.seek(0)

            yaml.dump(content, guild_remove)

            guild_remove.truncate()

Буду благодарен, если кто-нибудь сможет мне помочь: D

Ответы [ 2 ]

1 голос
/ 12 февраля 2020

Не пытайтесь переопределить поиск предмета для удаления, когда Python уже предоставляет это вам:

with open('guilds.yaml', 'r+') as guild_remove:
    content = yaml.safe_load(guild_remove)
    content["connected_guilds"].remove(guild_id)
    guild_remove.seek(0)
    yaml.dump(content, guild_remove)
    guild_remove.truncate()
0 голосов
/ 12 февраля 2020

Вот решение (со ссылкой на код дополнения):

with open('guilds.yaml', 'r+') as guild_remove:
    loader = yaml.safe_load(guild_remove)

    content = loader['connected_guilds']

    for server in content:
        if server != guild_id:
            continue
        else:
            content.remove(guild_id)

            guild_remove.seek(0)

            yaml.dump({'connected_guilds': content}, guild_remove)

            guild_remove.truncate()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...