Как правильно использовать рейз?
Может кто-нибудь помочь мне получить какую-то структуру в этом коде? Я новичок в этом. Ошибки должны фиксировать как несуществующие файлы, так и файлы, которые не содержат строк из четырех частей, разделенных знаком ";".
Программа должна выглядеть примерно так:
Название викторины: Хейсан
"Это привело к ошибке ввода / вывода, пожалуйста, попробуйте еще раз!"
Имя файла викторины: namn.csv
"Файл имеет неправильный формат. Должно быть четыре строки, разделенных; в каждой строке файла".
Имя файла викторины: quiz.csv
Где quiz.csv выполняет все требования!
def get_quiz_list_handle_exceptions():
success = True
while success:
try:
file = input("Name of quiz-file: ")
file2 = open(file,'r')
for lines in range(0,9):
quiz_line = file2.readline()
quiz_line.split(";")
if len(quiz_line) != 4:
raise Exception
except FileNotFoundError as error:
print("That resulted in an input/output error, please try again!", error)
except Exception:
print("The file is not on the proper format. There needs to be four strings, separated by ; in each line of the file.")
else:
success = False
get_quiz_list_handle_exceptions()
2 ответа
Решение
У вас есть многочисленные проблемы:
- Неправильный отступ в нескольких местах
- Неспособность сохранить результаты
split
Таким образом, ваш тест длины проверяет длину строки, а не количество компонентов, разделенных точкой с запятой - (Незначительный) Не используется
with
операторы, не закрывая файл, поэтому дескриптор файла можно оставить открытым на неопределенное время (зависит от интерпретатора Python)
Фиксированный код:
def get_quiz_list_handle_exceptions():
success = True
while success:
try:
file = input("Name of quiz-file: ")
with open(file,'r') as file2: # Use with statement to guarantee file is closed
for lines in range(0,9):
quiz_line = file2.readline()
quiz_line = quiz_line.split(";")
if len(quiz_line) != 4:
raise Exception
# All your excepts/elses were insufficiently indented to match the try
except FileNotFoundError as error:
print("That resulted in an input/output error, please try again!", error)
except Exception:
print("The file is not on the proper format. There needs to be four strings, separated by ; in each line of the file.")
else:
success = False # Fixed indent
get_quiz_list_handle_exceptions()
В вашем коде есть ошибка отступа
def get_quiz_list_handle_exceptions():
success = True
while success:
try:
file = input("Name of quiz-file: ")
file2 = open(file,'r')
for lines in range(0,9):
quiz_line = file2.readline()
quiz_line.split(";")
if len(quiz_line) != 4:
raise Exception
except FileNotFoundError as error:
print("That resulted in an input/output error, please try again!", error)
except Exception:
print("The file is not on the proper format. There needs to be four strings, separated by ; in each line of the file.")
else:
success = False
get_quiz_list_handle_exceptions()