7
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ですか?

4

1 に答える 1

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()
于 2013-01-27T06:12:46.810 に答える