@DestinyMaker

Из-за чего возникает ошибка и как исправить?

Мне нужно выводить текст при вызове из функции. Срабатывает лишь первый раз, дальше я сразу получаю ошибку list index out of range. Суть ошибки понимаю, но не могу понять из-за чего она появилась
text_file = StringIO()
text_file.write("История 1")
text_file.write("\r\n")
text_file.write("История 2")
text_file.write("\r\n")
text_file.write("История 3")
text_file.write("\r\n")
text_file.write("История 4")
text_file.write("\r\n")
text_file.seek(0)

def all_stories():
    return [storie for storie in text_file.readlines() if "\r\n"]
def get_storie(index):
    return all_stories()[index]

print(get_storie(0))
print(get_storie(1))
  • Вопрос задан
  • 36 просмотров
Решения вопроса 1
shurshur
@shurshur
Сисадмин, просто сисадмин...
При вызове all_stories происходит промотка StringIO на конец виртуального "файла", и второй запуск all_stories() получает пустой список. Тут же all_stories() вызывается каждый раз в get_storie заново.

Проще с самого начала хранить тексты не в не StringIO, а в list:

stories = ["История 1", "История 2"]
stories.append("А также история 3")
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы