我在我的应用程序中使用Python / C API,并想知道如何使用gui应用程序获得控制台输出。当出现脚本错误时,它会通过printf显示,但这显然对gui app没有影响。我希望能够在不创建控制台的情况下获得输出。可以这样做吗?
编辑 - 我正在使用Windows,顺便说一句。
编辑 - Python / C库在内部调用printf,并在加载和运行任何脚本之前执行此操作。如果有错误,我希望能够得到它。
答案 0 :(得分:1)
使用logging
包而不是printf。如果需要记录C函数的输出,可以使用类似的东西。
答案 1 :(得分:1)
如果printf
你的意思是来自C代码的确切调用,你需要将你的标准输出(文件描述符0)重定向(和解缓冲)到你可以从中获取数据的地方 - 远离琐事,特别是在Windows中,虽然可能是可行的。但为什么不把你的C代码中的那个调用更改为更合理的呢? (最坏的情况是,你自己设计的geprintf
函数模仿printf来构建一个字符串然后适当地指向该字符串。
如果你真的在Python代码中表示print
语句,那就容易多了 - 只需将sys.stdout设置为一个接受字符串的write
方法的对象,你就可以使用该方法做任何事情你想要的,包括记录,在GUI窗口上写,无论你想要什么。啊在C级别那么简单! - )