避免使用Octave符号包中不需要的文本

时间:2016-01-18 12:06:37

标签: python matlab octave symbolic-math

当您第一次拨打vpa(来自Octave的symbolic package)时,Octave会在输出实际结果之前在屏幕上生成一些文字。例如:

>> x = pretty(vpa('sqrt(-1)'))
OctSymPy v2.2.4: this is free software without warranty, see source.
Initializing communication with SymPy using a popen2() pipe.
Detected Windows: using "winwrapy.bat" to workaround Octave bug #43036
Some output from the Python subprocess (pid 6680) might appear next.

OctSymPy: Communication established.  SymPy v0.7.6.1.
Python 2.7.11 (v2.7.11:6d1b6a68f775, Dec  5 2015, 20:32:19) [MSC v.1500 32 bit (Intel)]
x =   1.0*I

请注意,实际输出(变量x)是字符串'1.0*I',正如预期的那样。其余部分不是函数输出的一部分,而是直接在屏幕上生成的文本。

该文本不会出现在vpa的后续调用中,只是在启动Octave后的第一次。它似乎与vpa没有特别关系,而是与Octave与Python通信以处理符号计算的方式有关。

有没有办法避免显示文字?或者失败了,有没有办法暂时捕获stdout 来拦截该文本?例如,Matlab的evalc(用捕获来计算表达式)将是一个解决方案,但Octave没有这个功能。

1 个答案:

答案 0 :(得分:3)

选项sympref quiet onrecently been committed,至少会抑制部分消息。检查doc sympref以查看您的版本中是否已存在更改。