gpt4 book ai didi

Python + 禁用打印输出,无法取回

转载 作者:行者123 更新时间:2023-11-28 18:24:25 25 4
gpt4 key购买 nike

我找到了这段代码 elsewhere on stackoverflow .我一直在使用它,但现在我似乎无法让任何打印功能工作,无论我执行多少次 enablePrint() ......有什么想法吗?

# Disable
def blockPrint():
sys.stdout = open(os.devnull, 'w')

# Restore
def enablePrint():
sys.stdout = sys.__stdout__

和 Print('test') 没有输出结果。我在 Juptyer 中做这一切。

最佳答案

您需要存储旧的标准输入以便恢复它:

import sys
import os

# Disable
def blockPrint():
sys.__stdout__ = sys.stdout
sys.stdout = open(os.devnull, 'w')

# Restore
def enablePrint():
sys.stdout = sys.__stdout__

blockPrint()
print("test")
enablePrint()
print("test")

将打印一次test。此外,我建议使用上下文管理器:

from contextlib import contextmanager

@contextmanager
def blockPrint():
import sys
old_stdout = sys.stdout
sys.stdout = None
try:
yield
finally:
sys.stdout = old_stdout

with blockPrint():
print("test")

print("test")

这将再次打印一次test

编辑:对于那些想知道为什么这可能是必要的:在某些情况下 sys.__stdout__ 可以是 None(参见 https://docs.python.org/3/library/sys.html)-对我来说,例如,Windows 上 IDLE 中的 Python 3.5 shell 就是这种情况。

Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:01:18) [MSC v.1900 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> import sys
>>> repr(sys.__stdout__)
'None'
>>> repr(sys.stdout)
'<idlelib.PyShell.PseudoOutputFile object at 0x03ACF8B0>'

关于Python + 禁用打印输出,无法取回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42464444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com