Python论坛  - 讨论区

标题:[python-chinese] 关于一个正侧的问题

2004年03月24日 星期三 13:21

poly gentooo at 163.com
Wed Mar 24 13:21:29 HKT 2004

比如
"package com.n.b;\n\n"
我如何取com.n.b呢?
去package空格已经成功了,但是好象不能去\n\n不知道如何做?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20040324/8545d546/attachment.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2004年03月24日 星期三 17:03

千里马肝 tlovexyj at 21cn.com
Wed Mar 24 17:03:28 HKT 2004

python-chinese at lists.python.cn, 您好!

	我在自己的C++程序中写了一个py用来打印PyErr_Print所返回的错误。
	同时在python的封装类中我用PyObject_CallObject在指定的module中调用指定的函数。
	但是,如果这个module或是函数中有语法错误时,该错误机制却不能正常工作,为什么?

	以下是py代码:

import sys, time
from cd2 import *

# 截获错误信息
class errCatcher:
    def __init__(self, filename):
        self.info = ''
        self.name = filename
        tmp = open(filename, 'w')
        tmp.close()
        
    def write(self, stuff):
        self.info += stuff

    def showmsg(self):
        f = open(self.name, 'a')
        f.write(time.ctime())
        f.write('\n--------------------------------------------------\n')
        f.write(self.info)
        f.write('\n\n')
        f.close()
        MsgBox(self.info)
        self.info = ''


# 截获输出信息
class outCatcher:
    def __init__(self, filename):
        self.name = filename
        tmp = open(filename, 'w')
        tmp.close()
        
    def write(self, stuff):
        f = open(self.name, 'a')
        f.write(stuff)
        f.close()

sys.stderr = errCatcher('python_err.log')
sys.stdout = outCatcher('python_out.log')




以下是C++嵌入python的调用代码:
	
void RunFuncInModule(const Char *szFuncName, const Char *szModuleName)
{
	try
	{
		python::handle main_module( python::borrowed( PyImport_AddModule( "__main__" ) ) );
		python::handle main_namespace( python::borrowed( PyModule_GetDict( main_module.get() ) ) );

		python::handle local_module( python::borrowed( PyImport_ImportModule( const_cast( szModuleName ) ) ) );

#ifdef _DEBUG
		python::handle ( python::borrowed( PyImport_ReloadModule( local_module.get() ) ) );
#endif

		python::handle local_namespace( python::borrowed( PyModule_GetDict( local_module.get() ) ) );
		
		PyObject *func = python::expect_non_null( PyDict_GetItemString( local_namespace.get(), const_cast( szFuncName ) ) );
		if ( PyCallable_Check( func ) != 0 )
		{
			python::handle( PyObject_CallObject( func, NULL ) );
		}
	}
	catch (python::error_already_set)
	{
		python::handle_exception();
		PyErr_Print();
		PyRun_SimpleString("sys.stderr.showmsg()");
	}
}

  
        致
礼!

  
        千里马肝
        tlovexyj at 21cn.com
          2004-03-24 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2004年03月26日 星期五 06:08

David Abrahams dave at boost-consulting.com
Fri Mar 26 06:08:41 HKT 2004

"千里马肝" <tlovexyj at 21cn.com> writes:

> python-chinese at lists.python.cn, 您好!
>
> 	我在自己的C++程序中写了一个py用来打印PyErr_Print所返回的错误。

I can't read the message; most of the characters show up for me as
empty rectangles.  I suspect that applies to most other participants
on the list.  Please re-post in plain-ASCII encoded English if you
want us to help.

-- 
Dave Abrahams
Boost Consulting
www.boost-consulting.com



[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号