拖地喵 发表于 2020-12-13 11:35:31

类文件对象打开后是否需要关闭

python中的文件对象打开后毋庸置疑需要关闭。类文件对象like-file打开后,需要特别指定关闭么?

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

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

永恒的蓝色梦想 发表于 2020-12-13 12:38:20

案例1:不需要。

hrp 发表于 2020-12-13 12:47:53

1. 标准输入流不需要关闭
2. 需要关闭,但不关闭好像也没引发什么问题

拖地喵 发表于 2020-12-13 19:37:43

hrp 发表于 2020-12-13 12:47
1. 标准输入流不需要关闭
2. 需要关闭,但不关闭好像也没引发什么问题

标准输入输出流,通过help查看有close方法。如果不需要关闭,为啥要定义close方法呢?

hrp 发表于 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()就会报错,到时候还是要手动打开。
贯穿整个程序生命周期的标准输入输出流和标准错误流,没必要总是关闭又打开。

记忆的欠片 发表于 2020-12-20 12:05:45

及时关闭文件的目的是为了把还在内存中的内容及时写入磁盘保存,预防陷入写代码时断电的痛苦
页: [1]
查看完整版本: 类文件对象打开后是否需要关闭