如何安全地打开/closuresPython 2.4中的文件

我正在编写一个小脚本,用于使用Python的服务器上。 服务器只安装了Python 2.4.4。

我没有开始使用Python,直到2.5出来,所以我习惯于forms:

with open('file.txt', 'r') as f: # do stuff with f 

但是,2.5之前没有声明,而且我无法find有关正确清理文件对象的手动示例。

使用老版本的python时,安全处理文件对象的最佳做法是什么?

使用try/finally

 f = open('file.txt', 'r') try: # do stuff with f finally: f.close() 

这确保了即使# do stuff with f引发exception, f仍然会被正确closures。

请注意, open应该出现在try 之外 。 如果open本身引发exception,则文件未打开并且不需要closures。 另外,如果open引发exception,则其结果不会被分配给f并且调用f.close()是错误的。

在上面的解决scheme中,这里重复:

 f = open('file.txt', 'r') try: # do stuff with f finally: f.close() 

如果发生了什么不好的事情(你永远不会知道……)成功打开文件之后,在尝试之前,文件将不会被closures,所以更安全的解决scheme是:

 f = None try: f = open('file.txt', 'r') # do stuff with f finally: if f is not None: f.close() 

这里给出的例子是如何使用open和“python close

 from sys import argv script,filename=argv txt=open(filename) print "filename %r" %(filename) print txt.read() txt.close() print "Change the file name" file_again=raw_input('>') print "New file name %r" %(file_again) txt_again=open(file_again) print txt_again.read() txt_again.close() 

有多less次打开的文件必须closures那个时间。