2016-10-02 93 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中關閉文件?

問:當我嘗試縮短此腳本時,在結束時關閉文件時出現錯誤。你可能做了這樣的事情,indata = open(from_file).read(),這意味着當你到達腳本的結尾時,你不需要再做in_file.close()。它應該已經由Python一旦運行一條線就關閉了。

那麼,你怎麼知道什麼時候關閉文件,什麼時候不用?

謝謝大家,我明白了! :)

+0

你可以右鍵後'INDATA = in_file.read關閉文件()' –

+2

你應該使用'with'無論如何建設。 – TigerhawkT3

+1

當您不再需要讀取文件時,可以關閉文件,寫入文件?對? –

回答

3

methods-of-file-objects

它與文件對象打交道時使用關鍵字用好的做法。這有一個好處,即在套件 完成後,即使在路上發生異常,文件也會正確關閉。它也比寫等價的try-finally塊短得多:

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

何時關閉文件?總是 - 一旦你完成了它的工作。否則,它只會記住內存。

+0

是的,但最安全和最乾淨的方法是使用'with',而不是自己明確調用文件的'.close'方法。 –

相關問題