gpt4 book ai didi

python - 如果我没有初始化文件,如何关闭它?

转载 作者:太空狗 更新时间:2023-10-30 02:32:35 24 4
gpt4 key购买 nike

如果我做了以下事情:

import codecs
lines = codecs.open(somefile, 'r','utf8').readlines()

有没有办法关闭我没有初始化的文件?如果是这样,怎么做? 通常,我可以这样做:

import codecs
reader = codecs.open(somefile, 'r','utf8')
lines = reader.readlines()
reader.close()

最佳答案

在 CPython 中,一旦引用计数降为 0,文件对象将自行关闭,这恰好在 .readlines() 返回之后。对于其他 Python 实现,它可能需要更长的时间,具体取决于所使用的垃圾收集算法。该文件肯定会在程序退出之前关闭。

您真的应该将文件对象用作上下文管理器,并在其上关闭 with 语句调用:

with codecs.open(somefile, 'r','utf8') as reader:
lines = reader.readlines()

一旦 with 语句下缩进的代码块退出(有异常,returncontinuebreak 语句,或者仅仅是因为 block 中的所有代码都已执行完毕),reader 文件对象将被关闭。

额外提示:文件对象是可迭代对象,因此以下内容也有效:

with codecs.open(somefile, 'r','utf8') as reader:
lines = list(reader)

得到完全相同的结果。

关于python - 如果我没有初始化文件,如何关闭它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17399460/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com