[英]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.