#python
#python
Вопрос:
У меня есть список файлов, имя которых содержит некоторые данные, которые я собираю.
Я хочу
- проверьте правильность данных,
- если нет, поднимите allarm
Каков правильный способ сделать это? Мой код работает, но я не уверен, должен ли я вызывать NameError или другой тип
expected_value='has-to-be-this-exact-value'
#importing files, with information stored in the name
filename_1 = 'whatever_has-to-be-this-exact-value'
filename_2 = 'whatever_not-the-same-should-raise-error'
def catch_name_error (filename, expected_value):
if filename.split('_')[1]!=expected_value:
print (filename.split('_')[1])
raise NameError("Names dont match")
catch_name_error(filename_1,expected_value)
print ('nothing happend')
catch_name_error(filename_2, expected_value)
out:
nothing happend
not-the-same-should-raise-error
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-62-d6f6ad995399> in <module>
12 catch_name_error(filename_1,expected_value)
13 print ('nothing happend')
---> 14 catch_name_error(filename_2, expected_value)
<ipython-input-62-d6f6ad995399> in catch_name_error(filename, expected_value)
8 if filename.split('_')[1]!=expected_value:
9 print (filename.split('_')[1])
---> 10 raise NameError("Names dont match")
11
12 catch_name_error(filename_1,expected_value)
NameError: Names dont match
Комментарии:
1. Я предлагаю поднять
ValueError
.
Ответ №1:
Взгляните на список встроенных исключений в документации Python: https://docs.python.org/3/library/exceptions.html
В вашем случае кажется, что a ValueError
может быть подходящим:
исключение
ValueError
Возникает, когда операция или функция получает аргумент, который имеет правильный тип, но неподходящее значение, и ситуация не описывается более точным исключением, таким как
IndexError
.
Комментарии:
1. спасибо, и чаще ли помещать последовательность «ошибка повышения» в свою собственную функцию и вызывать ее, когда вам это нужно; или я должен сразу записывать ее в каждую функцию?
Ответ №2:
Попробуйте использовать «try-except с ValueError»
def catch_name_error (filename, expected_value):
try:
if filename.split('_')[1]!=expected_value:
print (filename.split('_')[1])
except ValueError:
print("The name has error or something ")