20201211_126_file檔案操作_作業系統底層關係_寫入檔案
技術標籤:學習筆記_Python程式設計基礎_Pycharm版
第八章 檔案操作(IO 技術)
一個完整的程式一般都包括資料的儲存和讀取;我們在前面寫的程式資料都沒有進行實際的儲存,因此 python 直譯器執行完資料就消失了。實際開發中,我們經常需要從外部儲存介質(硬碟、光碟、U 盤等)讀取資料,或者將程式產生的資料儲存到檔案中,實現“持久化”儲存。
有基礎的同學知道,很多軟體系統是將資料儲存的資料庫中;資料庫實際也是基於檔案形式儲存的,本章我們就學習檔案的相關操作。
文字檔案和二進位制檔案
按檔案中資料組織形式,我們把檔案分為文字檔案和二進位制檔案兩大類。
- 文字檔案
文字檔案儲存的是普通“字元”文字,python 預設為 unicode 字符集(兩個位元組表示一個字元,最多可以表示:65536 個),可以使用記事本程式開啟。但是,像 word 軟體編輯的文件不是文字檔案。 - 二進位制檔案
二進位制檔案把資料內容用“位元組”進行儲存,無法用記事本開啟。必須使用專用的軟體解碼。常見的有:MP4 視訊檔案、MP3 音訊檔案、JPG 圖片、doc 文件等等。
檔案操作相關模組概述
Python 標準庫中,如下是檔案操作相關的模組,會陸續介紹。
名稱 | 說明 |
---|---|
io模組 | 檔案流的輸入和輸出操作 input output |
os模組 | 基本作業系統功能,包括檔案操作 |
glob模組 | 查詢符合特定規則的檔案路徑名 |
fnmatch模組 | 使用模式來匹配檔案路徑名 |
fileinput模組 | 處理多個輸入檔案 |
filecmp模組 | 用於檔案的比較 |
csv模組 | 用於csv檔案處理 |
pickle和cPickel | 用於序列化和反序列化 |
xml包 | 用於XML資料處理 |
bz2、gzip、zipfile、zlib、tarfile | 用於壓縮和解壓縮檔案(分別對應不同的演算法) |
建立檔案物件 open()
Python中一切都是物件,要對文字檔案進行讀寫操作,首先會在Python中建立一個代表文字本件的物件,這物件對映外部的文字檔案。Python對文字檔案物件的操作會被IO流同步到文字檔案中。
open()函式用於建立檔案物件,基本語法格式如下:
open(檔名[,開啟方式])
如果只是檔名,代表在當前目錄下的檔案。檔名可以錄入全路徑,比如:D:\a\b.txt。
為了避免直譯器將路徑的部分“+”誤認為轉義字元,可以在路徑字串前加r告訴直譯器對r後跟的這個字串不識別轉義字元。示例:
f = open(r"d:\b.txt","w")
開啟方式有如下幾種:
模式 | 描述 |
---|---|
r | read,只讀模式 |
w | write,寫模式。如果檔案不存在則建立檔案寫入;如果檔案已存在則重寫新內容覆蓋原內容。 |
a | append,追加模式。如果檔案不存在則建立檔案寫入;如果檔案已存在則在檔案原內容的末尾另起一行繼續寫入。 |
b | binary,二進位制模式(可與其他模式組合使用) |
+ | 讀寫模式(可與其他模式組合使用) |
文字檔案物件和二進位制檔案物件的建立:
如果我們沒有增加模式“b”,則預設建立的是文字檔案物件,處理的基本單元是“字元”。
如果是二進位制模式“b”,則建立的是二進位制檔案物件,處理的基本單元是“位元組”。例如:
f = open(r"d:\b.xls","wb")
文字檔案的寫入
基本的檔案寫入操作
文字檔案的寫入一般就是三個步驟:
- 建立檔案物件
- 寫入資料
- 關閉檔案物件
為什麼要關閉檔案物件?
Python是通過直譯器呼叫作業系統的資源對系統中的檔案進行操作,關閉檔案物件是為了同時釋放掉對檔案進行操作佔用的系統資源。
我們建立一個小程式,體驗一下文字檔案的寫入操作:
【例】文字寫入操作簡單測試
f = open(r'a.txt','a')
s = '好好學習\n天天向上'
f.write(s)
f.close()
執行結果: