2012-01-24 10 views
1
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) 

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

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

print "Does the output file exist? %r" % exists(to_file) 
print "Ready, hit RETURN to continue, CTRL-C to abort." 
raw_input() 

output = open(to_file, 'w') 
output.write(indata) 

print "Alright, all done." 

output.close() 
input.close() 

なぜコード内にoutput.close()をする必要がありますか?なぜinput.close()にも? 最後の2行のコードは完璧に動作していますが、何もエラーがないので、なぜそれをしなければならないのか分かりません。LPTHWエクササイズ17、エクストラクレジット6

答えて

2

(プログラムを終了するときにファイルが閉じられますが(その理由は、それらの行をコメントアウトしたときに機能するためです)、終了したファイルを閉じることをお勧めします。あたかもこれが関数であり、他の関数によって呼び出されていてファイルを閉じなかったかのように、ファイル記述子が漏れてしまい、しばらくしてプログラムが使い果たされたように見えます。

関連する問題