2016-09-27 34 views
2

我是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') 
+1

不知道爲什麼這是downvoted,這是一個明確聲明和題目問題。 – flornquake

+0

@flornquake可能是因爲它缺乏研究。我確定官方文件涵蓋了這些情況。 – vaultah

+0

@ŁukaszRogalski你怎麼能斷定這個問題是那個問題的重複? –

回答

2

的文件可能會保持開放的區別。

請注意,在垃圾回收或軟件終止時自動關閉,但將它作爲例外,幀或甚至延遲的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') 
+0

特別是,在cpython中,它可能會立即關閉。在具有不同GC語義的Python的其他實現中,它可能保持開放(並且可能未寫)很長一段時間。 – Max

相關問題