Я читаю из файла список дробей и разбираю их в список кортежей. Я хочу, чтобы произошла ошибка, если файл пуст или знаменатель меньше или равен 0.
Я пытался поместить if (EOFERRor), elif (zerodivisionerror), elif (assertionerror) и др. Внутри класса InvalidFile (Exception). До того, как мое исключение подняло бы значение для конца файла, поэтому я специально включил его в него.
Я думаю, что EOF происходит одновременно с делением на ноль, но я отделил список от файла, чтобы этого не происходило
class InvalidFile(Exception):
if(EOFError):
pass
else:
print('Invalid file format')
sys.exit(1)
def createFractionList(filePath):
try:
f = open(inFile)
f.close()
except FileNotFoundError:
print('FileNotFoundError')
sys.exit(1)
fractionList = []
for line in open(filePath):
line = line.rstrip()
try:
numerator, denominator = tuple(int(x) for x in line.split())
except:
raise InvalidFile
fractionList.append((numerator, denominator))
for lists in fractionList:
try:
lists[0]/lists[1]
except:
raise InvalidFile
return fractionList
dateList = createFractionList(inFile)
print(dateList)
ВХОД:
1 0
3 4
5 6
7 8
9 10
0 8
2 4
9 12
20 24
35 40
54 60
Ожидаемый результат:
Неверный формат файла
Фактический:
C: \ Users \ Xavier \ PycharmProjects \ hw4 \ venv \ Scripts \ python.exe C: /Users/Xavier/PycharmProjects/hw4/hw4.py
Traceback (последний вызов был последним):
Файл "C: /Users/Xavier/PycharmProjects/hw4/hw4.py", строка 33, в createFractionList
списки [1] / 0
ZeroDivisionError: деление на ноль
Во время обработки вышеуказанного исключения произошло другое исключение: