+ -
当前位置:首页 → 问答吧 → pyhton中的文件对象打开后是否必须要close()[有示例]?

pyhton中的文件对象打开后是否必须要close()[有示例]?

时间:2010-10-26

来源:互联网

下面是书上的一个生成器表达式,获取文件中最长的行:

Python code

return max(len(x.strip()) for x in open('etc/motd'))



感觉很奇怪,文件打开后没有调用close(),是不是不需要啊?

作者: Dic4000   发布时间: 2010-10-26

Python的GC(垃圾收集)采用的是引用计数的方式,即当一个对象不再被引用(自然也不再会被使用)的时候,对象自动销毁。
比如:
Python code

# 方法1
f = open('file1') # 文件对象被f引用
s = f.read()
f.close() # 显式关闭文件f
# 方法2
s = open('file2').read() # 文件对象创建后直接使用read()方法,之后不再被引用,自动销毁。

作者: feilniu   发布时间: 2010-10-26

简单操作可能无碍,如果后头立刻又要操作相同文件可能会出问题,貌似手册建议用with语句确保及时关闭。
个人觉的写代码没必要强塞在一个句子里...

作者: angel_su   发布时间: 2010-10-26