易截截图软件、单文件、免安装、纯绿色、仅160KB

Python 3 输出重定向使用C/C++

Python 3 输出重定向使用C/C++
By:gddsky
 
目标
希望将Python 3的输出重定向到自定义的输出目标。
 
核心
Python使用sys.stdout、sys.stderr做输出目标,只要我们替换这两个值就可以重定向到我们自定义目标。替换的值的规则在Python的文档中sys (module)的sys.stdout上面说明只要添加一个write函数就可以了。像这样:
write(self, str)
我们只要在这个函数里面调用我们自己的输出函数就可以实现该目标了。
 
方案
在C++中写一个Python模块,并导入
在C++中利用PyRun_SimpleString建立一个PyObject去替换原始的sys.stdout、sys.stderr
搞定!!!
 
代码
模块定义部分代码(用python demo下的例子改写的)
static PyObject *console_write(PyObject *self, PyObject* args)
{
    if (s_pyConsoleNotify != NULL)
    {
        const char* pMsgString=0;
 
        if (!PyArg_ParseTuple( args, "s", &pMsgString ))
        {
            return NULL;
        }
        // 我们自己的输出函数
        myprint(pMsgString);
    }
 
    Py_INCREF( Py_None );
    return Py_None;
}
 
static PyMethodDef console_methods[] = {
    {"test",        console_test,   METH_NOARGS, "Return the meaning of everything."},
    {"write",   console_write,  METH_VARARGS, NULL},
    {NULL,      NULL}       /* sentinel */
};
 
static struct PyModuleDef consolemodule = {
    {}, /* m_base */
    "console_capi",  /* m_name */
    0,  /* m_doc */
    0,  /* m_size */
    console_methods, 


相关文档:

python应用领域介绍

 
Python作为一种功能强大且通用的编程语言而广受好评,它具有非常清晰的语法特点,适用于多种操作系统,目前在国际上非常流行,正在得到越来越多的应用。 
下面就让我们一起来看看它的强大功能: 
Python(派森),它是一个简单的、解释型的、交互式的、可移植的、面向对象的超高级语言。这就是对Python ......

如何发布vc调用Python的独立运行的程序

编译Python脚本生成可执行程序,可以通过py2exe编译完成。
在VC中调用python时,可以结合py2exe,完成整个程序的独立发布^_^
google.py:
#! /usr/bin/env python
import sys, webbrowser
def main(a):
    url = "http://www.google.com/search?q=%s" % a
    webbrowser.o ......

python 字符串和datetime转换

       为了从字符串中提取时间,并进行比较,因此有了这个问题,如何将字符串转换成datetime类型
       1.字符串与time类型的转换
>>> import time
>>> timestr = "time2009-12-14"
>>> t = time.strptime(timest ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号