为什么以下python代码不打印到文件

时间:2013-01-27 06:01:50

标签: python

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

1 个答案:

答案 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()