繁体   English   中英

在python中打开和关闭没有文件对象的文件

[英]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()

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

更好的结构,如

with open(myfile,'w') as fp:
    fp.write(...)

不要改变这个; 在这种情况下, fp也是一个上下文管理器,但仍然包含指向myfile的指针; 没有必要提醒它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM