clipspy подвеска для pyclips clips.ErrorStream.Read () - PullRequest
0 голосов
/ 16 октября 2018

Можно ли прочитать ErrorStream из клипов, используя clipspypyclips это работает следующим образом: clips.ErrorStream.Read().

Имеет ли смысл делать это с clipspy, или все ошибки выбрасываются как исключения и могут быть перехвачены с clips.CLIPSError?

1 Ответ

0 голосов
/ 16 октября 2018

Когда clipspy обнаруживает ошибку, возникает исключение CLIPSError, включающее вывод werror в качестве сообщения.Поэтому вы можете в основном полагаться на это.

Тем не менее, поскольку API-интерфейсы CLIPS C не полностью согласованы, вы можете найти какой-то угловой случай.Чаще всего исключение CLIPSError может не содержать сообщения об ошибке, поскольку CLIPS не всегда печатает сообщение в случае ошибки.

Если вы хотите прочитать выходные данные CLIPS, вы можете сделать это с помощью средств маршрутизации, которыедокументированы в CLIPS Advanced Programming Guide.Clipspy API-интерфейсы маршрутизатора очень близки к интерфейсам C.

Вы также можете использовать LoggingRouter для управления выводом CLIPS с помощью регистрации в Python.Это удобно, когда вы хотите интегрировать CLIPS в службу Python.

import clips
import logging

logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(levelname)s - %(message)s')

env = clips.Environment()
router = clips.LoggingRouter()

router.add_to_environment(env)

env.eval('(printout t "Hello World!" crlf)')

Вывод

2018-10-16 17:29:01,829 - INFO - Hello World!
...