首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

python的嵌入有关问题

2012-02-14 
python的嵌入问题在C++程序里调用Python的解析器去执行一段Python脚本,请问如何获得脚本里的print语句打印

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++里处理
或者可以用命名管道

热点排行