Есть ли способ использовать генератор и открыть файл? - PullRequest
0 голосов
/ 29 апреля 2020

В настоящее время я работаю над ботом discord.py, в поисках которого я чаще использую генераторы. Но у меня ошибка при попытке инициализировать метод объекта с помощью генератора вывода. Вот что я пытался сделать:

def get_language_config(member: Member):
    [role] = [role.name for role in member.roles if role.name in LANGS]
    return LANGS_TO_CONFIG[role]


@client.command(name="ip")
async def ip_command(ctx):
    sender = ctx.author
    translation = get_language_config(sender)
    data = Data(translation).read("langs")["IP_COMMAND"] # Here is the line that seems raise a problem.
    embed = BaseEmbed(title=data["title"], description=data["description"])
    embed.add_field(name=data["field_1"][0], value=data["field_1"][1])
    await ctx.send(embed=embed, file=BaseEmbed.BASIC_FILE)

Вот класс объектов Data ():

import json


class Data:
    def __init__(self, data):
        self.data = data

    def update(self, key, value):
        with open("data/config.json", "r", encoding="utf-8") as file:
            json_data = json.load(file)
            json_data[self.data][key] = value
        with open("data/config.json", "w") as file:
            json.dump(json_data, file, indent=2)

    def read(self, file: str):
        with open("data/%s.json" % file, "r+", encoding="utf-8") as json_file:
            data = json.load(json_file)
        return data[self.data]

Ошибка вывода:

ValueError: I/O operation on closed file

PS: я извиняюсь за мой язык (я французский), и я впервые публикую что-либо на сайте.

1 Ответ

0 голосов
/ 29 апреля 2020

Вы пытаетесь прочитать закрытый файл, попробуйте открыть его с помощью:

with open("YOUR_FILE", "r") as file:
    data = Data(translation).read("file")["IP_COMMAND"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...