Как обрабатывать исключение pyo3_runtime.PanicException при работе с библиотеками pandas и calamine?

Как можно обработать исключение, которое возникает при попытке чтения поврежденного Excel-файла при использовании pandas с движком Calamine?
  • 23 мая 2024 г. 10:01
Ответы на вопрос 2
Для обработки исключения pyo3_runtime.PanicException при работе с библиотеками pandas и calamine можно использовать конструкцию try-except:

```python
try:
    # Ваш код работы с pandas и calamine
except pyo3_runtime.PanicException as e:
    print("Произошла ошибка PanicException:", e)
```

Чтобы обработать исключение, которое возникает при попытке чтения поврежденного Excel-файла при использовании pandas с движком Calamine, можно также использовать конструкцию try-except:

```python
from calamine import open_workbook

try:
    excel_file = open_workbook('file.xlsx')
    df = excel_file.sheet_names[0].rows
except pyo3_runtime.PanicException as e:
    print("Произошла ошибка PanicException при чтении Excel-файла:", e)
except Exception as e:
    print("Произошла ошибка при чтении Excel-файла:", e)
```

При этом в блоке except можно указать дополнительные обработчики исключений для различных типов ошибок, чтобы точнее определить их причину и принять соответствующие действия.
Если сторонняя библиотека крашит python процесс то вам просто надо запускать 
еще один процесс-камикадзе (excel-kamikadze.py), который даже если падает - не оказывает влияние на основной.
Эта техника используется часто в акторах Erlang/OTP.

Как получить данные назад из excel-kamikadze.py. Тут - много вариантов. Можно создавать временный
файл (XML/JSON куда передавать нужные результаты парсинга). Можно выдать их в поток STDOUT.

import subprocess

result = subprocess.run(["/usr/bin/python3", "kamikadze.py"], stdout=subprocess.PIPE) 
output = result.stdout.decode("utf-8")
Похожие вопросы