我是python新手。將文件在「open(file_name,'w +')。write(somestr)」之後關閉「
我不知道如果我寫:
open('/tmp/xxx.txt', 'w+').write('aabb')
會的文件中仍然打開或關閉?
在另一個詞,什麼是上面和
with open('/tmp/xxx.txt', 'w+') as f:
f.write('aabb')
我是python新手。將文件在「open(file_name,'w +')。write(somestr)」之後關閉「
我不知道如果我寫:
open('/tmp/xxx.txt', 'w+').write('aabb')
會的文件中仍然打開或關閉?
在另一個詞,什麼是上面和
with open('/tmp/xxx.txt', 'w+') as f:
f.write('aabb')
的文件可能會保持開放的區別。
請注意,將在垃圾回收或軟件終止時自動關閉,但將它作爲例外,幀或甚至延遲的GC可能會保持打開狀態是一種不好的做法。
另外,如果程序意外終止,並且您沒有flush()
它,則可能會丟失數據。
在蟒蛇,其中GC是不同的許多發行版(PyParallel例如)它可能會造成很大的問題。
即使在CPython中,它也可能在幀參考的情況下仍然保持打開狀態。嘗試運行這個:
import sys
glob_list = []
def func(*args, **kwargs):
glob_list.append((args, kwargs))
return func
sys.settrace(func)
open('/tmp/xxx.txt', 'w+').write('aabb')
特別是,在cpython中,它可能會立即關閉。在具有不同GC語義的Python的其他實現中,它可能保持開放(並且可能未寫)很長一段時間。 – Max
不知道爲什麼這是downvoted,這是一個明確聲明和題目問題。 – flornquake
@flornquake可能是因爲它缺乏研究。我確定官方文件涵蓋了這些情況。 – vaultah
@ŁukaszRogalski你怎麼能斷定這個問題是那個問題的重複? –