gpt4 book ai didi

python - sys.stdout 未重新分配给 sys.__stdout__

转载 作者:行者123 更新时间:2023-12-02 05:11:00 25 4
gpt4 key购买 nike

我对 Python 还很陌生,所以我还在学习这门语言。我遇到的一件事是重新分配 sys.stdout 以更改打印的默认输出。所以我写了这个作为测试:

import sys
sys.stdout = open('log.txt','a')
print('hey')
sys.stdout.close()
sys.stdout = sys.__stdout__
print('hi')

“Hey”已写入文件,但“hi”没有显示。但是,这按预期工作,“hey”被写入文件,“hi”被打印到控制台输出:

import sys
sys.__stdout__ = sys.stdout
sys.stdout = open(r'C:\Users\Vincent\Documents\Python\log.txt','a')
print('hey')
sys.stdout.close()
sys.stdout = sys.__stdout__
print('hi')

简而言之,这是一个小问题,实际上并不重要,我只是想知道是否有明显的原因导致它无法按应有的方式工作。我已经在 Windows 7 Home Premium 上尝试过此操作,在 v3.2.3 上使用 IDLE 和 pyscripter 以及我的可移植 python v3.2.1。

最佳答案

在 IDLE 中,sys.__stdout__ 是程序的原始标准输出 - 它无处可去,因为它不是控制台应用程序。换句话说,IDLE 本身已经将 sys.stdout 替换为其他内容(它自己的控制台窗口),因此您将退后两步,将自己的 stdout 替换为__stdout__

关于python - sys.stdout 未重新分配给 sys.__stdout__,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12719328/

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