如何抑制python的matlab输出

时间:2018-04-03 12:28:54

标签: python matlab

假设您有以下.m脚本:

% foo.m
function foo = run()
    disp('Hello!!');
    foo = 1;
end

现在,您使用以下命令从python执行foo.m:

import matlab.engine
eng = matlab.engine.start_matlab()
py_foo = eng.foo()

此代码将设置py_foo = 1并将显示输出Hello。如何抑制matlab输出?

1 个答案:

答案 0 :(得分:2)

我回答我的问题。

我没有仔细阅读有关Python API的matlab文档。按照this page的说明,我的问题的正确答案是:

import matlab.engine
import io

eng = matlab.engine.start_matlab(stdout=io.StringIO())
py_foo = eng.foo()

输出:

// no output! :D

如果您使用exec()(并且在这种情况下非常确定用户输入),请记住传递给exec()的字符串中的import io,即:

import matlab.engine
import io // this is useless!!

eng = matlab.engine.start_matlab()
str = "import io;eng.foo(stdout=io.stringIO())" // put it here
loc = {}
exec(str, {"eng" : eng}, loc)
py_foo = loc["foo"]