号外:《黑客攻防入门学习课程》现已推出,喜欢的朋友请关注!!!

文件操作中open()与with open() as… 间的差异

python 泰泰 1899℃ 0评论

【导读】

在编写Python代码的时候,经常会操作各种文件,而在操作文件的时候,我们会经常用到:open() 和 with open() as… 这两种句式。那么这两个句式有什么不一样呢?

text_img

open()

例如:

以上是一个标准的文件操作(写)流程,分别由”打开文件”–“写入文件内容”–“关闭文件”这三个步骤完成。但这只是简短的几行代码,逻辑非常的清晰,但当操作写入文件中的语句(内容)多了后,往往程序员会忘记”关闭”这个文件。

下面从系统资源分配层面来讲,系统在执行这个程序时,都需要做些什么。

首先,在执行”fp = open(“./aa.txt”, “w+”)”这行语句时,系统需要为这个文件操作腾出一个空地(运行内存),一直供这个文件操作使用,直至执行”fp.close()”语句时,相应的内存空间才会被释放。

那么,如果程序员真的忘记关闭这个文件了,这时候就造成了系统资源的长期占用(造成了浪费),又或者说,当程序发生了异常,而没能”关闭”这个文件,那么后面想执行文件删除、移动等操作就行不通了。

with… as…

为了解决上述的问题,Python提供了 with…as…语句来解决这一问题,下面这来看其操作过程:

上面的操作,我们只操作了前两步,即”打开文件”–“写入内容”,”关闭文件”这一步没有了。原因是,with…as…是根据代码块(隶属)关系进行工作的,当程序执行在代码块内时,文件会一直保持打开状态,一旦当程序离开这个代码块(即不隶属这个区间)时,程序就会自动的关闭这个文件,实现更好的文件管理,最优的使用系统资源。

通过最后的文件状态查看语句”fp.closed()”可以看到文件退出该区块时,已经自动关闭了该文件。

转载请注明:泰泰博客 » 文件操作中open()与with open() as… 间的差异

喜欢 (1)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址(选填)