使用文件对象打开和关闭文件:
fp=open("ram.txt","w")
fp.close()
Run Code Online (Sandbox Code Playgroud)
如果我们想在不使用文件对象的情况下打开和关闭文件,即;
open("ram.txt","w")
Run Code Online (Sandbox Code Playgroud)
我们需要写作close("poem.txt")还是写作close()好吗?
他们都没有给出任何错误......
只编写close(),它如何理解我们引用的文件?
对于内存中的每个对象,Python都会保留引用计数.只要没有对周围对象的引用,它就会被垃圾收集.
该open()函数返回一个文件对象.
f = open("myfile.txt", "w")
Run Code Online (Sandbox Code Playgroud)
在上面的行中,您在变量中保留对对象的引用f,因此文件对象保持存在.如果你这样做
del f
Run Code Online (Sandbox Code Playgroud)
然后文件对象不再有引用,并将被清理.它将在此过程中关闭,但这可能需要一段时间,这就是为什么使用该with构造更好.
但是,如果你这样做:
open("myfile.txt")
Run Code Online (Sandbox Code Playgroud)
然后创建文件对象并立即再次丢弃,因为没有对它的引用.它消失了,关闭了.你不能再关闭它,因为你不能说你想要关闭什么.
open("myfile.txt", "r").readlines()
Run Code Online (Sandbox Code Playgroud)
要评估整个表达式,首先open调用它,它返回一个文件对象,然后readlines调用该方法.然后返回结果.由于现在没有对文件对象的引用,因此会立即再次丢弃它.