通常當有人發佈他們的代碼時,人們會補充說:「您現在應該使用with open('filename') as f
語法。」我同意大多數陳舊的f = open()
聲明沒有附帶的.close()
,我甚至回答了這樣的問題:對「隱式關閉」的依賴是他們編程問題的全部原因。爲什麼`open()`更適合在Python中打開文件?
但是,在某些情況下,將代碼嵌套到with
塊中似乎會在編寫代碼時造成其他不便。例如,我有時候喜歡在開始時使用一個標誌來表示writefile = True
。這使我只能打開和關閉文件,如果它將被使用,同時保持相同的處理線程。在代碼中的不同位置,我可以打印到屏幕或寫入文件。 (我知道我會打開stdout
或在開始文件,並使用這種方法來代替。)
我的問題是:,除了沒有明確關閉文件,是否有其他原因使用with
語法處理文件,特別是輸出文件? (「更多pythonic」本身不是一個理由。)如果這是重複的,我會很高興有這個指出,但我自己找不到它。
不,有with'的'沒有其他好處。如果您的設計從「開放」和「關閉」組合中獲益更多,那麼通過所有方式使用它。 – RickyA
謝謝大家。我很欣賞專業知識和見解。 – beroe