返回信息流for line in open('a.txt'):
line_list = line.split('t')
这是一条镜像帖。来源:北邮人论坛 / python / #20075同步于 2017/11/21
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖
open读文件需要关闭吗?不关闭有什么影响
TOEFL
2017/11/21镜像同步20 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
建议用with写
如果逐行读,可以这样写:
with open (file, 'r') as f_obj:
for line in f_obj.readlines():
pass
Python官方的解释器使用朴素引用计数,会在最后一个引用被删除的时候自动关闭文件,所以很久以来人们都这样干:
lines = open('a.txt').read().splitlines()
但是依赖引用计数(以及依赖垃圾回收)来管理非内存的资源总是不安全的。Jython和PyPy都不使用引用计数,所以上述语句都不会自动关闭文件。就连官方Python,一不小心也会导致垃圾回收不及时关闭文件。所以,从Python2.6开始,增加了with语句:
with open('a.txt') as f:
lines = f.read().splitlines()
至于不关文件有什么后果
1. 试试看不断打开文件,直到一个进程同时打开的文件数量超过操作系统定的上限。
2. 如果是读还好,如果是写的话,有可能不关闭的话内容不会真的写到磁盘上。
【 在 TOEFL 的大作中提到: 】
: for line in open('a.txt'):
: line_list = line.split('t')
天呐,你好厉害
【 在 nuanyangyang (暖羊羊) 的大作中提到: 】
: Python官方的解释器使用朴素引用计数,会在最后一个引用被删除的时候自动关闭文件,所以很久以来人们都这样干:
: [code=python]
: lines = open('a.txt').read().splitlines()
: ...................
前排膜暖。
所以with open一般什么时候执行关闭的操作呢?
【 在 nuanyangyang 的大作中提到: 】
: Python官方的解释器使用朴素引用计数,会在最后一个引用被删除的时候自动关闭文件,所以很久以来人们都这样干:
: [code=python]
: lines = open('a.txt').read().splitlines()
: ...................
退出with语句块的时候
【 在 rancho (松岡茉優「Matsuoka Mayu」) 的大作中提到: 】
: 前排膜暖。
: 所以with open一般什么时候执行关闭的操作呢?