gpt4 book ai didi

python - 强制 UTF-8 输出(不与 tty 通话时为 moSTLy)

转载 作者:太空宇宙 更新时间:2023-11-04 01:42:18 27 4
gpt4 key购买 nike

我这样做:

import sys, codecs
sys.stdout = codecs.getwriter('utf8')(sys.stdout)
sys.stderr = codecs.getwriter('utf8')(sys.stderr)

但我知道少了点什么。在 HD 崩溃之前我收集了大量代码,我的代码片段中有一些东西阻止了:

reload(sys)

从撤消编解码器更改。有谁知道那可能是什么?

最佳答案

与 UTF8 完全不同(因此与您的 Q 的标题完全不同),reload(sys) 重新打开标准输入、输出和错误文件。尝试一个更简单的案例看看:

>>> import sys
>>> print>>sys.stderr,'ciao'
ciao
>>> sys.stderr.close()
>>> print>>sys.stderr,'ciao'
>>> reload(sys)
<module 'sys' (built-in)>
>>> print>>sys.stderr,'ciao'

如果你想在重新绑定(bind)它们之后恢复 sys.stdout 和/或 sys.stderr,只需隐藏旧的引用并将它们重新绑定(bind)到“隐藏的” "引用恢复。 (您可以使用 sys.__stdout__sys.__stderr__,Python 本身在启动时将它们隐藏起来,但这可能会在高级 shell 或您可能正在运行的调试器,因为后者可能正在执行它们自己的类似操作)。

如果您还想在文件或文件描述符关闭后继续存在,则必须更深入(例如使用 os.fdopen 标准描述符 0、1 和 2 重新打开——如果描述符本身已经更接近,甚至变得更毛茸茸;-) 并且通常与高级 shell 或调试器和平共处可能会成为失败的原因。但对于更简单的情况,只需来回重新绑定(bind)即可。

关于python - 强制 UTF-8 输出(不与 tty 通话时为 moSTLy),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3743239/

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