使用“open()”vs“with open()”读取文件

时间:2015-07-10 06:37:52

标签: python performance file-io

我知道有很多关于在python中读取文件的文章和问题。但我仍然想知道是什么让python有多种方法来完成同样的任务。我想知道的是,使用这两种方法对性能有何影响?

1 个答案:

答案 0 :(得分:33)

使用with语句不是为了提高性能,我认为使用with语句不会产生任何性能上的提升或损失,只要您执行与使用{相同的清理活动{1}}语句会自动执行。

当您使用带有with功能的with语句时,您无需在结尾处关闭该文件,因为open会自动为您关闭该文件。

此外,with语句不仅适用于打开文件,还与上下文管理器结合使用。基本上,如果您有一个对象要确保在完成它之后清除它或发生某种错误,您可以将其定义为context manager并且with语句将调用它进入和退出with块的with__enter__()方法。根据{{​​3}} -

  

这个PEP在Python语言中添加了一个新的语句“__exit__()”,以便能够分解try / finally语句的标准用法。

     

在此PEP中,上下文管理器提供在进入和退出with语句主体时调用的with__enter__()方法。

此外,使用__exit__()而不使用它的性能测试 -

with