def run(self, **kwargs):
"""Run madx as a subprocess."""
self._input += self._syntax['stop']
template_input = jinja2.Template(self._input).render(kwargs.get("context", {}))
if kwargs.get("debug", False) >= 2:
print(template_input)
if self._get_exec() is None:
raise MadxException("Can't run MADX if no valid path and executable are defined.")
p = sub.Popen([self._get_exec()],
stdin=sub.PIPE,
stdout=sub.PIPE,
stderr=sub.STDOUT,
cwd=".",
shell=True
)
self._output = p.communicate(input=template_input.encode())[0].decode()
self._warnings = [line for line in self._output.split('\n') if re.search('warning|fatal', line)]
self._fatals = [line for line in self._output.split('\n') if re.search('fatal', line)]
self._last_context = kwargs.get("context", {})
if kwargs.get('debug', False):
print(self._output)
return self
评论列表
文章目录