2016-11-10 2 views
0

Если я использую LIB, написанный на C в Python, такие как Zlib, и я получаю сообщение об ошибке, как:Ошибка обработки библиотеки c в python?

error: Error -3 while decompressing: invalid distance too far back 

Как справиться с этим исключением является питон? предположительно, исключение определено в модуле c, и нет класса исключений для catch, например, except SomeException?

ответ

0

Чтобы вызвать функцию C из Python, функция C должна быть обернута функцией Python. Для CPython оболочка может быть написана на C с помощью пакета, такого как Swig, в Cython или Python с помощью модуля ctypes. Обертка должна переводить входы Python в значения C, определять переменные вывода C, вызывать функцию C, проверять код возврата и либо переводить вывод C в Python, либо возвращать его, либо переводить код C в исключение Python и поднять его.

похоже, что вы используете Python's zlib, который обертывает C zlib. Он определяет класс исключения Python error.

>>> import zlib 
>>> zlib.error 
<class 'zlib.error'> 
>>> issubclass(zlib.error, Exception) 
True 

Вы поймаете его, как любое другое исключение.

>>> try: 
    raise zlib.error('Error 99: unknown') 
except zlib.error as e: 
    print(e) 

Error 99: unknown 

Чтобы быть в соответствии с Конвенцией исключением имен, я бы назвал его ZlibError.

Смежные вопросы