from sys import stdout
stdout = open('file', 'w')
print 'test'
stdout.close()
会创建该文件,但它不包含任何内容。
我必须使用
import sys
sys.stdout = open('file', 'w')
print 'test'
sys.stdout.close()
但是from ... import...
不会自动使名字可用吗?为什么我仍然需要使用sys.stdout
而不是stdout
?
答案 0 :(得分:8)
问题是:print
相当于sys.stdout.write()
。
因此,当您执行from sys import stdout
时,stdout
将不会使用变量print
。
但是当你做的时候
import sys
print 'test'
它实际写入sys.stdout
,指向您打开的file
。
<强>分析强>
from sys import stdout
stdout = open('file', 'w')
print 'test' # calls sys.stdout.write('test'), which print to the terminal
stdout.close()
import sys
sys.stdout = open('file', 'w')
print 'test' # calls sys.stdout.write('test'), which print to the file
sys.stdout.close()
<强>结论强>
这有效......
from sys import stdout
stdout = open('file', 'w')
stdout.write('test')
stdout.close()