2016-10-02 11 views
0
from sys import argv 
from os.path import exists 

script, from_file, to_file = argv 

print "Copying from %s to %s" % (from_file, to_file) 


in_file = open(from_file) 
indata = in_file.read() 

print "The input file is %d bytes long" % len(indata) 

print "Does the output file exist? %r" % exists(to_file) 
#above is the original code. 

彼は上記のファイルを閉じます。しかし、一般的な学生の質問には、これがあります。Pythonでファイルを閉じるタイミングを知りませんか?

Q.このスクリプトを短くしようとすると、最後にファイルを閉じるとエラーが発生します。

A. indata = open(from_file).read()のようになりました。つまり、スクリプトの最後に到達したらin_file.close()を実行する必要はありません。 Pythonは、一行が実行されると既に閉じられているはずです。

だから、いつファイルを閉じるのか、そうでないのはわかるのですか?

ありがとう皆さん、私はそれを持っています! :)

+0

あなたが右(INDATA = in_file.read '後にファイルを閉じることができます)あなたは' WITH'を使用する必要があります ' –

+2

とにかく構築する。 – TigerhawkT3

+1

ファイルを読む必要がなくなったときにファイルを閉じることができます。右? –

答えて

3

methods-of-file-objects

ファイルオブジェクトを扱うときにキーワードを使用することをお勧めします。これは、たとえ途中で例外が発生したとしても、ファイル が終了した後にファイルが適切に閉じられるという利点があります。また、同等のtry-finallyブロックを書くよりもはるかに短いです:

>>> with open('workfile', 'r') as f: 
...  read_data = f.read() 
>>> f.closed 
True 
0

いつファイルを閉じるのですか?常に - あなたがそれで作業を終えたら。さもなければ、それはちょうどメモリを騒ぐでしょう

+0

Trueですが、これを行う最も安全でクリーンな方法は、ファイルの '.close'メソッドを明示的に呼び出すのではなく、' with'を使うことです。 –

関連する問題