open 和with open as的區別

2021-09-27 09:30:52 字數 871 閱讀 2788

file = open("test.txt","r")

for line in file.readlines():

print line

file.close()

這樣直接開啟檔案,如果出現異常,如讀取過程中檔案不存在或異常,則直接出現錯誤,close方法無法執行,檔案無法關閉

with open("test.txt","r") as file:

for line in file.readlines():

print line

用with語句的好處,就是到達語句末尾時,會自動關閉檔案,即便出現異常。

with語句實際上是乙個非常通用的結構,允許你使用所謂的上下文管理器。上下文管理器是支援兩個方法的物件:__enter__和__exit__。

方法__enter__不接受任何引數,在進入with語句時被呼叫,其返回值被賦給關鍵字as後面的變數。

方法__exit__接受三個引數:異常型別、異常物件和異常跟蹤。它在離開方法時被呼叫(通過前述引數將引發的異常提供給它)。如果__exit__返回false,將抑制所有的異常。

檔案也可用作上下文管理器。它們的方法__enter__返回檔案物件本身,而方法__exit__關閉檔案

file= open("test.txt","r")

try:

for line in file.readlines():

print line

except:

print "error"

finally:

file.close()

with語句作用效果相當於上面的try-except-finally

with open as是什麼意思

進行一次檔案的讀取,在匯入os模組的前提下,主要需要以下 f open try.txt r print f.read f.close 這裡涉及到乙個問題,如果檔案 try.txt 不存在,那麼就會報錯,無法執行f.close操作,持續占用記憶體。如何解決這個問題?利用異常處理辦法,將關閉檔案的指令放...

open和fopen的區別

1.緩衝檔案系統 緩衝檔案系統的特點是 在記憶體開闢乙個 緩衝區 為程式中的每乙個檔案使用,當執行讀檔案的操作時,從磁碟檔案將資料先讀入記憶體 緩衝區 裝滿後再從記憶體 緩衝區 依此讀入接收的變數。執行寫檔案的操作時,先將資料寫入記憶體 緩衝區 待記憶體 緩衝區 裝滿後再寫入檔案。由此可以看出,記憶...

open和fopen的區別

open和fopen的區別 1.緩衝檔案系統 緩衝檔案系統的特點是 在記憶體開闢乙個 緩衝區 為程式中的每乙個檔案使用,當執行讀檔案的操作時,從磁碟檔案將資料先讀入記憶體 緩衝區 裝滿後再從記憶體 緩衝區 依此讀入接收的變數。執行寫檔案的操作時,先將資料寫入記憶體 緩衝區 待記憶體 緩衝區 裝滿後再...