2024-06-08 08:57:49 发布
网友
使用文件对象打开和关闭文件:
fp=open("ram.txt","w") fp.close()
如果要在不使用文件对象的情况下打开和关闭文件,即
我们需要写close("poem.txt")还是写close()就可以了?在
close("poem.txt")
close()
他们中没有人会出错。。。在
通过只写close(),它将如何理解我们所引用的文件?在
对于内存中的每个对象,Python都保留一个引用计数。只要周围不再有对对象的引用,它就会被垃圾回收。在
open()函数返回一个file对象。在
open()
f = open("myfile.txt", "w")
在上面的行中,您在变量f中保留对对象的引用,因此file对象保持存在。如果你这么做的话
f
那么文件对象就不再有引用,并将被清理。它将在这个过程中关闭,但这可能需要一段时间,这就是为什么使用with构造更好。在
with
但是,如果您只是这样做:
open("myfile.txt")
然后创建file对象并立即再次丢弃,因为没有对它的引用。它不见了,关上了。你不能再关闭它了,因为你不能说出你到底想关闭什么。在
open("myfile.txt", "r").readlines()
要计算整个表达式,首先调用open,它返回一个file对象,然后对该对象调用readlines方法。然后返回结果。由于现在没有对file对象的引用,它将立即再次被丢弃。在
open
readlines
如果我能正确理解问题,我会用with open(...)。 这个答案可能对你有帮助。在
with open(...)
为了回答你的实际问题。。。一个file对象(当您调用open时得到的)有对其中文件的引用。所以当你做类似的事情时:
fp = open(myfile, 'w') fp.write(...) fp.close()
上面的所有内容,包括write和close,都知道它们引用了myfile,因为这就是fp关联的文件。我不确定fp.close(myfile)实际上是做什么的,但它在打开后肯定不需要文件名。在
write
close
myfile
fp
fp.close(myfile)
更好的结构如
不要更改这个;在本例中,fp也是一个上下文管理器,但仍然包含指向myfile的指针;不需要提醒它。在
对于内存中的每个对象,Python都保留一个引用计数。只要周围不再有对对象的引用,它就会被垃圾回收。在
open()
函数返回一个file对象。在在上面的行中,您在变量
^{pr2}$f
中保留对对象的引用,因此file对象保持存在。如果你这么做的话那么文件对象就不再有引用,并将被清理。它将在这个过程中关闭,但这可能需要一段时间,这就是为什么使用
with
构造更好。在但是,如果您只是这样做:
然后创建file对象并立即再次丢弃,因为没有对它的引用。它不见了,关上了。你不能再关闭它了,因为你不能说出你到底想关闭什么。在
要计算整个表达式,首先调用
open
,它返回一个file对象,然后对该对象调用readlines
方法。然后返回结果。由于现在没有对file对象的引用,它将立即再次被丢弃。在如果我能正确理解问题,我会用
with open(...)
。 这个答案可能对你有帮助。在为了回答你的实际问题。。。一个file对象(当您调用
open
时得到的)有对其中文件的引用。所以当你做类似的事情时:上面的所有内容,包括
write
和close
,都知道它们引用了myfile
,因为这就是fp
关联的文件。我不确定fp.close(myfile)
实际上是做什么的,但它在打开后肯定不需要文件名。在更好的结构如
^{pr2}$不要更改这个;在本例中,
fp
也是一个上下文管理器,但仍然包含指向myfile
的指针;不需要提醒它。在相关问题 更多 >
编程相关推荐