python-3.x 临时更改系统标准输出会出现"值错误:关闭文件上的I/O操作

k2fxgqgv  于 2023-03-04  发布在  Python
关注(0)|答案(1)|浏览(108)

我正在做Marco Buttu的"Python编程:完成向导"中的例子。
目标是临时更改sys.stdout以避免向print()传递参数

>>> import sys
>>> sys.stdout = open('myfile.log', 'w')
>>> print('escribo en el archivo log...')
>>> print('todavia en el archivo log...')
>>> sys.stdout.close()
>>> open('myfile.log').read()

我得到了这个错误。

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: I/O operation on closed file.

有人能给我解释一下为什么会这样吗?
是由于版本不同而出现的一些错误(图书版本:3.4,实际版本:第3.6.5节)
我会寻找你的答案。
先谢谢你了。

eufgjt7s

eufgjt7s1#

您一直在用文件句柄覆盖sys.stdout。由于print()尝试写入sys.stdout,因此将失败。您应该重置它。
这将工作:

sys.stdout = sys.__stdout__

相关问题