python with open vs explicit open and close

时间:2014-01-17 14:34:53

标签: python

我对with open vs f = open()f.close()有疑问。 我一直在使用with open

每个(不包括Python版本)的专业版和内容是什么? 什么时候使用适当的场景以及为什么?

编辑:我问这个问题,因为在打开/关闭时使用'with'似乎有NFS(容易出现更多过时的NFS文件句柄错误)错误

任何人对此都有任何见解吗?

2 个答案:

答案 0 :(得分:5)

with语句的合理替代方法是使用

之类的结构
 f = open(...)
 try:
     # do stuff with f
 finally:
     f.close()

并且正好添加了with语句以添加此常见模式的语法。所以,这是一个明智的选择。

答案 1 :(得分:2)

更好。

来自file.close()上的文档:http://docs.python.org/2/library/stdtypes.html#file.close

  

从Python 2.5开始,如果使用with语句,则可以避免必须显式调用此方法。例如,以下代码将在退出with块时自动关闭f:

from __future__ import with_statement # This isn't required in Python 2.6

with open("hello.txt") as f:
    for line in f:
        print line,
  

在旧版本的Python中,您需要这样做才能获得相同的效果:

f = open("hello.txt")
try:
    for line in f:
        print line,
finally:
    f.close()