python中不带文件对象的文件打开和关闭

2024-06-08 08:57:49 发布

您现在位置:Python中文网/ 问答频道 /正文

使用文件对象打开和关闭文件:

fp=open("ram.txt","w")
fp.close()

如果要在不使用文件对象的情况下打开和关闭文件,即

^{pr2}$

我们需要写close("poem.txt")还是写close()就可以了?在

他们中没有人会出错。。。在

通过只写close(),它将如何理解我们所引用的文件?在


Tags: 文件对象txtclose情况openramfp
3条回答

对于内存中的每个对象,Python都保留一个引用计数。只要周围不再有对对象的引用,它就会被垃圾回收。在

open()函数返回一个file对象。在

f = open("myfile.txt", "w")

在上面的行中,您在变量f中保留对对象的引用,因此file对象保持存在。如果你这么做的话

^{pr2}$

那么文件对象就不再有引用,并将被清理。它将在这个过程中关闭,但这可能需要一段时间,这就是为什么使用with构造更好。在

但是,如果您只是这样做:

open("myfile.txt")

然后创建file对象并立即再次丢弃,因为没有对它的引用。它不见了,关上了。你不能再关闭它了,因为你不能说出你到底想关闭什么。在

open("myfile.txt", "r").readlines()

要计算整个表达式,首先调用open,它返回一个file对象,然后对该对象调用readlines方法。然后返回结果。由于现在没有对file对象的引用,它将立即再次被丢弃。在

如果我能正确理解问题,我会用with open(...)。 这个答案可能对你有帮助。在

为了回答你的实际问题。。。一个file对象(当您调用open时得到的)有对其中文件的引用。所以当你做类似的事情时:

fp = open(myfile, 'w')
fp.write(...)
fp.close()

上面的所有内容,包括writeclose,都知道它们引用了myfile,因为这就是fp关联的文件。我不确定fp.close(myfile)实际上是做什么的,但它在打开后肯定不需要文件名。在

更好的结构如

^{pr2}$

不要更改这个;在本例中,fp也是一个上下文管理器,但仍然包含指向myfile的指针;不需要提醒它。在

相关问题 更多 >