Я хотел бы иметь возможность сообщать о предупреждениях и ошибках при оценке блока кода Python в файле Org.
Когда в блоке кода есть ошибки синтаксиса Python, Org услужливо выдает их в отдельный буфер *Org-Babel Error Output*
. Было бы неплохо иметь возможность отправлять туда и свои собственные предупреждения, сохраняя при этом возможность возврата результата массива в режим Org в виде таблицы с использованием :results value
.
Чтобы быть ясным, вот фиктивный пример того, что, как я думал, может сработать:
#+BEGIN_SRC python
import sys
sys.stderr.write('Warning.\n')
sys.stderr.flush()
return [['Table', 'header'], ['table', 'data']]
#+END_SRC
#+RESULTS:
| Table | header |
| table | data |
Отредактировано, чтобы добавить: Это обсуждение в списке режима org предполагает, что вывод ошибки отображается только в случае сбоя при оценке блока кода. Таким образом, похоже, что это возможно, но только путем прерывания оценки с использованием exit(1)
или подобным.
Ответы:
Как описано Эриком Шульте в
org-mode
списке рассылки (см. Ссылку в вопросе), мы можем изменить это,org-babel-eval
чтобы добиться этого:Теперь, если
org-babel-eval-verbose
установлено значениеt
, вывод, напечатанный в stderr во время оценки блока исходного кода, отображается в отдельном окне, как если бы оценка исходного кода не удалась.источник