我在游戏引擎中运行 Python 2.4,并且希望能够在需要时关闭所有打印。例如,我希望在调试版本中打开打印,然后在发布版本中关闭打印。
它还必须尽可能透明。
我在引擎的 C 代码中对此的解决方案是printf
里面的函数vararg
宏,并将其定义为在发布版本中不执行任何操作。
这是我当前的解决方案:
DebugPrints = True
def PRINT (*args):
global DebugPrints
if DebugPrints:
string = ""
for arg in args:
string += " " + str(arg)
print string
它可以轻松切换打印输出,但可能有更好的方法来格式化字符串。我的主要问题是,这实际上向程序添加了更多的函数调用。
我想知道您是否可以对 print 关键字的工作原理做些什么?
是的,你可以分配sys.stdout
无论你想要什么。创建一个小类write
不执行任何操作的方法:
class DevNull(object):
def write(self, arg):
pass
import sys
sys.stdout = DevNull()
print "this goes to nirvana!"
使用相同的技术,您还可以通过设置将打印记录到文件中sys.stdout
到一个打开的文件对象。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)