使用with在Python 3上打开文件有什么好处?

时间:2011-05-05 18:24:36

标签: python-3.x python

使用

的真正性能优势是什么?
with open(__file__, 'r') as f:

而不是使用:

open(__file__,'r')
用于编写和读取文件的Python 3中的

4 个答案:

答案 0 :(得分:11)

使用with表示文件将在您离开块后立即关闭。这是有益的,因为关闭文件很容易被遗忘并占用您不再需要的资源。

答案 1 :(得分:8)

with语句基本上做的是利用对象上的两个新的魔术关键字:__enter____exit__来实现自动清理(c ++析构函数,.net IDisposable等)。所以有效发生的事情如下:

file = open(__file__, 'r')
try:
  # your code here
finally: file.close()

欢迎阅读pep-0343

中有关实际实施的更多信息

答案 2 :(得分:2)

要回答关于性能优势的问题,从严格的CPU /内存角度来看都没有。您的代码将无法执行任何更好的操作,但它会更加强大,打字更少,应该更清晰,更容易维护。所以从某种意义上说,性能提升将在以后的维护中以工时来衡量,我们都应该知道这是软件的真正成本,因此它将具有很大的“性能优势”。 ;)

答案 3 :(得分:1)

使用经典语法,您必须处理关闭文件,因此即使在文件处理期间发生异常。

恕我直言另一方面,使用with语句,您可以编写更小的代码,更易于阅读,python在您离开with块后负责关闭文件。< / p>

相关问题