檔案操作還不會嗎,面試的時候問到上下文管理還一臉懵逼?來不及了呀,趕快看,下次再有人問你的時候不用尷尬而不失禮貌的微笑了。
在python,使用open函式,可以開啟乙個已經存在的檔案,或者建立乙個新檔案。
# open(檔名,訪問模式)
file =
open
('test.txt'
,'w'
)
這裡是常用的讀寫模式,我簡單的整理了一下。
訪問模式說明r
以唯讀方式開啟檔案。檔案的指標將會放在檔案的開頭。這是預設模式。
w開啟乙個檔案只用於寫入。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。
a開啟乙個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該檔案不存在,建立新檔案進行寫入。
rb以二進位制格式開啟乙個檔案用於唯讀。檔案指標將會放在檔案的開頭。這是預設模式。
wb以二進位制格式開啟乙個檔案只用於寫入。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。
ab以二進位制格式開啟乙個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該檔案不存在,建立新檔案進行寫入。
r+開啟乙個檔案用於讀寫。檔案指標將會放在檔案的開頭。
w+開啟乙個檔案用於讀寫。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。
a+開啟乙個檔案用於讀寫。如果該檔案已存在,檔案指標將會放在檔案的結尾。檔案開啟時會是追加模式。如果該檔案不存在,建立新檔案用於讀寫。
rb+以二進位制格式開啟乙個檔案用於讀寫。檔案指標將會放在檔案的開頭。
wb+以二進位制格式開啟乙個檔案用於讀寫。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。
ab+以二進位制格式開啟乙個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。如果該檔案不存在,建立新檔案用於讀寫。
# 如有檔案直接開啟,沒有檔案會新建乙個檔案
file =
open
('test.txt'
,'w'
)
這裡要注意一下,開啟檔案的模式會影響接下來的操作。
file.
write
("hello world"
)
# read(num)
# num表示要從檔案中讀取的資料的長度(單位是位元組),如果沒有傳入num,那麼就表示讀取檔案中所有的資料
content = f.
read
()
檔案很大的時候切記要少量多次
file.
close
()
對於系統資源如檔案、資料庫連線、socket 而言,應用程式開啟這些資源並執行完業務邏輯之後,必須做的一件事就是要關閉(斷開)該資源。但是有時候發生異常後就會出現無法關閉,所以我們要做一些異常處理。
def test()
: f =
open
("output.txt"
,"w"
) try:
f.write
("python"
) except ioerror:
print
("oops error"
) finally:
f.close
()
這樣倒是可以滿足需求,不管發生什麼檔案一定會關閉,但是還有沒有更好的辦法呢?
def test()
: with open
("output.txt"
,"r"
) as f:
f.write
("python"
)
一種更加簡潔、優雅的方式就是用 with 關鍵字。open 方法的返回值賦值給變數 f,當離開 with **塊的時候,系統能夠自動呼叫 f.close() 方法。
任何實現了enter() 和exit() 方法的物件都可稱之為上下文管理器,上下文管理器物件可以使用 with 關鍵字。顯然,檔案(file)物件也實現了上下文管理器。
那麼檔案物件是如何實現這兩個方法的呢?我們可以模擬實現乙個自己的檔案類,讓該類實現enter() 和exit() 方法。
class file()
: def __init__
(self, filename, mode)
: self.filename = filename
self.mode = mode
def __enter__
(self)
:print
("entering"
) self.f =
open
(self.filename, self.mode)
return self.f
def __exit__
(self,
*args)
:print
("will exit"
) self.f.
close
()
enter() 方法返回資源物件,這裡就是你將要開啟的那個檔案物件,exit() 方法處理一些清除工作。
因為 file 類實現了上下文管理器,現在就可以使用 with 語句了。現在是不是感覺清楚多了。
剩下的要做的就簡單多了,我們可以把讀取任何檔案進行傳輸(,文字,資料夾,**…),另存或者通過網路請求傳送給指定使用者,是不是很強大呀!
這世界遠比你想象的好
一大早醒來,被王寶強離婚的訊息刷屏了,各大期刊,朋友圈,慢慢的負能量,很多人說發表感慨 現在的婚姻怎麼了 姑且不說誰的問題,與我們何干,每個人有每個人的生活方式,讓他們撕逼去吧。婚姻是愛情的墳墓嗎?如果你認為它是,那它終究會是。任何事,尤其與感情有牽扯的,在我看來都應該被視為一種信仰。生活,遠比你想...
Python的檔案操作
1.open使用open開啟檔案後一定要記得呼叫檔案物件的close 方法。比如可以用try finally語句來確保最後能關閉檔案。file object open thefile.txt try all the text file object.read finally file object....
Python的檔案操作
python中對檔案 資料夾 檔案操作函式 的操作需要涉及到os模組和shutil模組。一 1.得到當前工作目錄,即當前python指令碼工作的目錄路徑 os.getcwd 2.返回指定目錄下的所有檔案和目錄名 os.listdir 3.函式用來刪除乙個檔案 os.remove 4.刪除多個目錄 o...