[英]opening & closing file without file object in python
使用文件对象打开和关闭文件:
fp=open("ram.txt","w")
fp.close()
如果我们想在不使用文件对象的情况下打开和关闭文件,即;
open("ram.txt","w")
我们需要写close("poem.txt")
或写close()
是否正常?
他们都没有给出任何错误......
只编写close(),它如何理解我们引用的文件?
对于内存中的每个对象,Python都会保留引用计数 。 只要没有对周围对象的引用,它就会被垃圾收集。
open()
函数返回一个文件对象 。
f = open("myfile.txt", "w")
在上面的行中,您在变量f
保留对对象的引用,因此文件对象保持存在。 如果你这样做
del f
然后文件对象不再有引用,并将被清理。 它将在此过程中关闭,但这可能需要一段时间,这就是为什么使用with
构造更好。
但是,如果你这样做:
open("myfile.txt")
然后创建文件对象并立即再次丢弃,因为没有对它的引用。 它消失了,关闭了。 你不能再关闭它,因为你不能说你想要关闭什么。
open("myfile.txt", "r").readlines()
要评估整个表达式,首先调用open
,它返回一个文件对象,然后调用方法readlines
。 然后返回结果。 由于现在没有对文件对象的引用,因此会立即再次丢弃它。
如果我正确理解了问题,我会使用with open(...)
。 这个答案可能对你有帮助什么是python关键字“with”用于什么? 。
在回答你的实际问题时...一个文件对象(当你open
时你得到的东西)有对它中文件的引用。 所以当你做的事情如下:
fp = open(myfile, 'w')
fp.write(...)
fp.close()
上面的所有内容,包括write
和close
,都知道它们引用了myfile
因为这是与fp
相关联的文件。 我不确定fp.close(myfile)
实际上做了什么,但它确实在打开后不需要文件名。
更好的结构,如
with open(myfile,'w') as fp:
fp.write(...)
不要改变这个; 在这种情况下, fp
也是一个上下文管理器,但仍然包含指向myfile
的指针; 没有必要提醒它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.