我刚开始学习Python,对这门语言还不够熟悉。其中一件事情是重新分配sys.stdout来改变print的默认输出。于是我写了这个测试:
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上尝试过。
print
是否起作用了。当我在开头将一些其他变量分配给 sys.stdout 并将其改回来时,它可以工作最好编写代码来说明这一点,并描述它的输出。 - Piotr Dobrogost