鱼C论坛

 找回密码
 立即注册
查看: 2641|回复: 5

[技术交流] 类文件对象打开后是否需要关闭

[复制链接]
发表于 2020-12-13 11:35:31 | 显示全部楼层 |阅读模式
10鱼币
python中的文件对象打开后毋庸置疑需要关闭。类文件对象like-file打开后,需要特别指定关闭么?

案例1:fobj = sys.stdin
content = fobj.read()
还需要特别指定fobj.close()嘛?

案例2: os.popen()和subprocess.Popen()这类返回对象也是类文件对象,需要指定关闭嘛

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-13 12:38:20 | 显示全部楼层
案例1:不需要。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-13 12:47:53 | 显示全部楼层
1. 标准输入流不需要关闭
2. 需要关闭,但不关闭好像也没引发什么问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-12-13 19:37:43 | 显示全部楼层
hrp 发表于 2020-12-13 12:47
1. 标准输入流不需要关闭
2. 需要关闭,但不关闭好像也没引发什么问题

标准输入输出流,通过help查看有close方法。如果不需要关闭,为啥要定义close方法呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-13 22:43:24 | 显示全部楼层
本帖最后由 hrp 于 2020-12-13 22:47 编辑
拖地喵 发表于 2020-12-13 19:37
标准输入输出流,通过help查看有close方法。如果不需要关闭,为啥要定义close方法呢?


不需要和不能是两回事,可以关闭,但没那个必要,但总有特殊需求要关闭的时候,close方法总不能没有吧。
如果你sys.stdin.close()关闭了标准输入流,调用input函数还是会自动重新打开的,但调用sys.stdin.readline()就会报错,到时候还是要手动打开。
贯穿整个程序生命周期的标准输入输出流和标准错误流,没必要总是关闭又打开。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-20 12:05:45 | 显示全部楼层
及时关闭文件的目的是为了把还在内存中的内容及时写入磁盘保存,预防陷入写代码时断电的痛苦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 22:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表