python: лучший способ улучшить функцию с сообщением об ошибке
Я хочу улучшить следующую функцию. С учетом типов данных Pixel в GDAL (например: "Int16") повторно введите кодовый номер.
def GDAL_data_type(dataType):
dtypes = {
"Unknown": 0,
"Byte": 1,
"UInt16": 2,
"Int16": 3,
"UInt32": 4,
"Int32": 5,
"Float32": 6,
"Float64": 7,
"CInt16": 8,
"CInt32": 9,
"CFloat32": 10,
"CFloat64": 11
}
return dtypes[dataType]
GDAL_data_type("Int16")
3
Я хочу вставить сообщение об ошибке в функцию, где, если вы вводите dataType другой, сообщение об ошибке говорит:
raise SystemExit('Pixel data type no recognized %s' % dataType)
Я хочу спросить лучший способ вставить это сообщение об ошибке в мою функцию. заранее спасибо
2 ответа
Оберните поиск по словарю в блоке try, поймайте исключение keyerror и поднимите свой собственный из блока catch:
try:
return dtypes[dataType]
except KeyError:
raise ...
РЕДАКТИРОВАТЬ
Или более полно:
def GDAL_data_type(dataType):
dtypes = {
"Unknown": 0,
"Byte": 1,
"UInt16": 2,
"Int16": 3,
"UInt32": 4,
"Int32": 5,
"Float32": 6,
"Float64": 7,
"CInt16": 8,
"CInt32": 9,
"CFloat32": 10,
"CFloat64": 11
}
try:
return dtypes[dataType]
except KeyError:
raise ...
Вы можете либо поместить оператор return в блок try и перехватить любое исключение, либо создать default dictionary
и положить все значения в default dictionary
.Отель default dictionary
возвращает ноль, если в нем нет элемента.
Вы можете инициализировать словарь по умолчанию, как это
from collections import defaultdict
dtypes=defaultdict(int)
dtypes.update({
"Unknown": 0,
"Byte": 1,
"UInt16": 2,
"Int16": 3,
"UInt32": 4,
"Int32": 5,
"Float32": 6,
"Float64": 7,
"CInt16": 8,
"CInt32": 9,
"CFloat32": 10,
"CFloat64": 11
})
Вы можете получить значение, используя get()
метод. Если вы попытаетесь проверить значение, отсутствующее в словаре, оно вернет 0, и вы можете проверить, возвращает ли оно ноль, и распечатать сообщение об ошибке.
Пример:
dtypes.get("Int16",0)
вернется 3
dtypes.get("xyz",0)
вернет 0, потому что 0 устанавливается как значение по умолчанию, которое возвращается, когда ключ не найден
Вы можете использовать if
условие, чтобы проверить значение и распечатать сообщение об ошибке, если его 0
Это поможет вам установить собственное сообщение об ошибке или выполнить любую другую обработку, которая вам может потребоваться