Отловить исключение, вызванное пустым CSV-файлом... сообщить пользователю, что ему необходимо перезагрузить компьютерPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Отловить исключение, вызванное пустым CSV-файлом... сообщить пользователю, что ему необходимо перезагрузить компьютер

Сообщение Anonymous »

Итак, по сути, это программа для изучения слов на флипкартах. В нем есть французско-английский словарь, хранящийся в файле .csv, пользователь может решить в графическом интерфейсе, нажимать ли «галочку» («Я знаю этот словарь») или нет. Если он знает, словарный запас удаляется из нового файла «words_to_learn.csv», чтобы сохранить его прогресс в обучении. Программа будет искать этот файл при запуске и выбирать french_words.csv только в том случае, если другой файл не существует.
Теперь, когда «words_to_learn.csv» имеет хотя бы 1 словарную пару при запуске и пользователь знает эту пару, нажимает галочку для следующего словаря, программа сталкивается с ошибкой, поскольку не может выбрать из пустого файла .csv. Я мягко исправил это, внедрив исключение «pandas.errors.EmptyDataError» в мою цепочку «try-Exception...» в начале. Но я хочу, чтобы пользователь знал, что происходит, чтобы отобразить на tkInter, что он закончил обучение, но может перезапустить программу, чтобы заново выучить весь словарный запас. Как мне это реализовать? код ниже:
try:
vocab = pandas.read_csv("./data/words_to_learn.csv")
except pandas.errors.EmptyDataError:
vocab = pandas.read_csv("./data/french_words.csv")
os.remove("./data/words_to_learn.csv")
except FileNotFoundError:
vocab = pandas.read_csv("./data/french_words.csv")
to_learn = vocab.to_dict(orient="records")

Функция галочки срабатывает, когда пользователь нажимает кнопку «галочка», чтобы удалить из «words_to_learn.csv»:
def card_checkmark():
global current_card, flip_timer
window.after_cancel(flip_timer)
current_card = random.choice(to_learn)
canvas.itemconfig(canvas_image, image=card_front)
canvas.itemconfig(card_title, text="French", fill="black")
canvas.itemconfig(card_word, text=current_card["French"], fill="black")
to_learn.remove(current_card)
data = pandas.DataFrame(to_learn)
data.to_csv("data/words_to_learn.csv", index=False)
flip_timer = window.after(3000, flip_card)


Подробнее здесь: https://stackoverflow.com/questions/793 ... ave-to-res
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»