python中文件的打开与关闭_文件在python中打开和关闭

英里高概述是这样的:当您离开嵌套块时,Python会自动为您调用f.close().

你是否只是从底部掉下来,或者叫断/继续/返回跳出它,或者引发异常并不重要;不管你怎么离开那个街区.它总是知道你要离开,所以它总是关闭文件.*

一级下来,您可以将其视为映射到try:/ finally:语句:

f = open(filename)

try:

# My Code

finally:

f.close()

一级下来:如何知道呼叫关闭而不是一些不同的东西?

嗯,事实并非如此.它实际上调用特殊方法__enter__和__exit__:

f = open()

f.__enter__()

try:

# My Code

finally:

f.__exit__()

open返回的对象(Python 2中的文件,Python 3中io中的一个包装器)就像这样:

def __exit__(self):

self.close()

它实际上比上一版本复杂一点,这使得生成更好的错误消息变得更容易,并且让Python避免“进入”一个它不知道如何“退出”的块.

要了解所有细节,请阅读PEP 343.

Also if someone does explicitly close the file, will it have any undesirable effect ?

一般来说,这是一件坏事.

但是,文件对象会尽力使其安全.对已关闭的文件执行任何操作都是错误的 – 除了再次关闭它.

*除非您离开,例如,在执行脚本的过程中拉动服务器上的电源线.在这种情况下,显然,它永远不会运行任何代码,更不用说关闭了.但明确的关闭对你来说几乎没有帮助.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值