[英]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.