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

В последнее время я бы хотел еще больше поработать с файлом YAML с моим ботом discord.py. Поэтому я сейчас думаю о том, как добавить значение к указанному ключу c в файле YAML. Это мой текущий файл YAML:

connected_guilds:
    - 1st_guild_id

И всякий раз, когда он подключается к другой гильдии, он должен выглядеть так:

connected_guilds:
    - 1st_guild_id
    - 2nd_guild_id

et c.

Вот мой текущий код:

        with open('guilds.yaml', 'r+') as guild_add:
            yaml.dump({'connected_guilds'.replace("'", ""): [guild_id]}, guild_add, indent=4)

Так что, в принципе, я думаю, если мне нужно проверить условие if, если ключ уже существует, и если да, добавьте его ниже, но я все еще смущен при реализации этого.

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

1 Ответ

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

Вы открываете, но не читаете файл. Вы создаете новый список вместо добавления к существующему списку.

Вот как это сделать:

with open('guilds.yaml', 'r+') as f:
  # load the content
  content = yaml.safe_load(f)
  # append the new id to the existing list
  content["connected_guilds"].append(guild_id)
  # reset the position in the file (it's at the end since we read the file)
  f.seek(0)
  # write the updated YAML to the file
  yaml.dump(content, f)
  # throw away any (old) content of the file after the current position,
  # which is at the end of the YAML we just wrote.
  # since we added more content, it's unlikely that there is more content here,
  # but not impossible!
  f.truncate()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...