python的嵌入问题
在C++程序里调用Python的解析器去执行一段Python脚本,请问如何获得脚本里的print语句打印的消息?
[解决办法]
只要print的东西应该不需要内嵌,譬如改用管道方式执行脚本取得输出...
[解决办法]
用subprocess 和 管道比较好, 不过这就不用内嵌了,
另外一个仿法
或用内嵌重写sys.stdout,然后,通过cpython 把buff拿出来
>>> import sys
>>> from cStringIO import StringIO
>>>
>>>
>>> old_stdout = sys.stdout
sys.stdout
>>> old_stdout = sys.stdout
>>> buff = StringIO()
>>> sys.stdout = buff
>>>
>>>
>>> print 'hello'
#blah blah
#add your code here
>>> sys.stdout = old_stdout
>>> print buff.getvalue()
hello
>>> s = buff.getvalue()
#把buff拿出来
PyObject *global = PyModule_GetDict(PyImport_ImportModule("__main__"));
PyObject *obj = PyDict_GetItemString(global, "s");
[解决办法]
如果是窗口程序,那print的东西应该还留在stdout的buffer里没动,可以试试直接抽出来...
[解决办法]
我就是写到文件里,然后在C++里处理
或者可以用命名管道