[英]Suppress pygame debug output (console output)
显然,我正在使用的pygame版本存在一个问题,其中保留了调试语句- 如何在Python中抑制控制台输出? 在使用joystick.get_axis
。 这就是问题所在,但是我一直无法尝试使用这些答案中介绍的方法。 每种方法仍会打印SDL_JoystickGetAxis value
。
我也尝试过此博客,但仍在输出到控制台。 考虑到stdout
vs stderr
可能是一个问题,我尝试先抑制stdout
再抑制stderr
然后两者都无效。
基本上,我的代码一直在打印SDL_JoystickGetAxis value:0
或任何轴值。 如何抑制这些调试语句?
import os
import sys
from contextlib import contextmanager
@contextmanager
def suppress_stdout():
with open(os.devnull, 'w') as devnull:
old_stdout = sys.stdout
sys.stdout = devnull
try:
yield
finally:
sys.stdout = old_stdout
稍后在我的代码中,我使用该函数:
if speedchange == False and headingchange == False:
time.sleep(0.1)
with suppress_stdout():
speed_ax = joys.get_axis(1)
head_ax = joys.get_axis(0)
仍然输出调试语句
我不确定为什么您链接的博客中的代码不起作用,但是您始终可以将其放在代码顶部:
sys.stdout = os.devnull
sys.stderr = os.devnull
如果确实需要输出错误消息等,则可以执行以下操作:
sys.stdout = sys.__stdout__
sys.stderr = sys.__stderr__
以防万一您在博客中使用链接的上下文管理器错误,这是您应该如何使用它:
with suppress_stdout():
# Do blah foo and bar here
这在python 3.5和python 2.7中为我工作
import sys, os
stdout = sys.__stdout__
stderr = sys.__stderr__
print("start")
sys.stdout = open(os.devnull,'w')
sys.stderr = open(os.devnull,'w')
print("don't want")
sys.stdout = stdout
sys.stderr = stderr
print("want")
输出是
start
want
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.