python檔案
目錄
-
- 2.2 操作檔案的函式/方法
- 2.3 read 方法 —— 讀取檔案
- 2.6 檔案讀寫案例 —— 複製檔案
- 3. 檔案/目錄的常用管理操作
- 4. 文字檔案的編碼格式
- 4.2 Ptyhon 2.x 中如何使用中文
1. 檔案的概念
1.1 檔案的概念和作用
- 計算機的 檔案 ,就是儲存在某種 長期儲存裝置 上的一段 資料
- 長期儲存裝置包括:硬碟、U 盤、行動硬碟、光碟...
檔案的作用
將資料長期儲存下來,在需要的時候使用
1.2 檔案的儲存方式
- 在計算機中,檔案是以 二進位制 的方式儲存在磁碟上的
文字檔案和二進位制檔案
- 文字檔案
- 可以使用 文字編輯軟體 檢視
- 本質上還是二進位制檔案
- 例如:python 的源程式
- 二進位制檔案
- 儲存的內容 不是給人直接閱讀的,而是 提供給其他軟體使用的
- 例如:圖片檔案、音訊檔案、視訊檔案等等
- 二進位制檔案不能使用 文字編輯軟體 檢視
2. 檔案的基本操作
2.1 操作檔案的套路
在 計算機 中要操作檔案的套路非常固定,一共包含 三個步驟 :
- 開啟檔案
- 讀、寫檔案
- 讀 將檔案內容讀入記憶體
- 寫 將記憶體內容寫入檔案
- 關閉檔案
2.2 操作檔案的函式/方法
- 在
Python
中要操作檔案需要記住 1 個函式和 3 個方法
序號 | 函式/方法 | 說明 |
---|---|---|
01 | open | 開啟檔案,並且返回檔案操作物件 |
02 | read | 將檔案內容讀取到記憶體 |
03 | write | 將指定內容寫入檔案 |
04 | close | 關閉檔案 |
-
open
函式負責開啟檔案,並且返回檔案物件 -
read
/write
/close
三個方法都需要通過 檔案物件 來呼叫
2.3 read 方法 —— 讀取檔案
-
open
函式的第一個引數是要開啟的檔名(檔名區分大小寫)- 如果檔案 存在 ,返回 檔案操作物件
- 如果檔案 不存在 ,會 丟擲異常
-
read
方法可以一次性 讀入 並 返回 檔案的 所有內容 -
close
方法負責 關閉檔案- 如果 忘記關閉檔案 , 會造成系統資源消耗,而且會影響到後續對檔案的訪問
- 注意 :
read
方法執行後,會把 檔案指標 移動到 檔案的末尾
# 1. 開啟檔案 file = open("test.txt") # 2. 讀取 text = file.read() print(text) # 3. 關閉檔案 file.close()
提示
- 在開發中,通常會先編寫 開啟 和 關閉 的程式碼,再編寫中間針對檔案的 讀/寫 操作!
檔案指標
- 檔案指標 標記 從哪個位置開始讀取資料
- 第一次開啟 檔案時,通常 檔案指標會指向檔案的開始位置
- 當執行了
read
方法後, 檔案指標 會移動到 讀取內容的末尾- 預設情況下會移動到 檔案末尾
思考
- 如果執行了一次
read
方法,讀取了所有內容,那麼再次呼叫read
方法,還能夠獲得到內容嗎?
答案
- 不能
- 第一次讀取之後,檔案指標移動到了檔案末尾,再次呼叫不會讀取到任何的內容
2.4 開啟檔案的方式
-
open
函式預設以 只讀方式 開啟檔案,並且返回檔案物件
語法如下:
f = open("檔名", "訪問方式")
訪問方式 | 說明 |
---|---|
r | 以 只讀 方式開啟檔案。檔案的指標將會放在檔案的開頭,這是 預設模式 。如果檔案不存在,丟擲異常 |
w | 以 只寫 方式開啟檔案。如果檔案存在會被覆蓋。如果檔案不存在,建立新檔案 |
a | 以 追加 方式開啟檔案。如果該檔案已存在,檔案指標將會放在檔案的結尾。如果檔案不存在,建立新檔案進行寫入 |
r+ | 以 讀寫 方式開啟檔案。檔案的指標將會放在檔案的開頭。如果檔案不存在,丟擲異常 |
w+ | 以 讀寫 方式開啟檔案。如果檔案存在會被覆蓋。如果檔案不存在,建立新檔案 |
a+ | 以 讀寫 方式開啟檔案。如果該檔案已存在,檔案指標將會放在檔案的結尾。如果檔案不存在,建立新檔案進行寫入 |
提示
- 頻繁的移動檔案指標, 會影響檔案的讀寫效率 ,開發中更多的時候會以 只讀 、 只寫 的方式來操作檔案
寫入檔案示例
# 開啟檔案 file = open("test.txt", 'w') file.write("hehe") file.write("開心下") # 關閉檔案 file.close()
2.5 按行讀取檔案內容
-
read
方法預設會把檔案的 所有內容 一次性讀取到記憶體 - 如果檔案太大,對記憶體的佔用會非常嚴重
readline
方法
-
readline
方法可以一次讀取一行內容 - 方法執行後,會把 檔案指標 移動到下一行,準備再次讀取
讀取大檔案的正確姿勢
# 開啟檔案 file = open("test.txt") while True: text = file.readline() if not text: break print(text, end="") # 關閉檔案 file.close()
2.6 檔案讀寫案例 —— 複製檔案
目標:用程式碼的方式,來實現檔案複製過程
小檔案複製
# 開啟檔案 file = open("test.txt") while True: text = file.readline() if not text: break print(text, end="") # 關閉檔案 file.close()
大檔案複製
- 開啟一個已有檔案,逐行讀取內容,並順序寫入到另外一個檔案
file_read = open("test.txt") file_write = open("test-Copy.txt", "w") while True: text = file_read.readline() if not text: break file_write.write(text) file_write.close() file_read.close()
3. 檔案/目錄的常用管理操作
- 在 終端 / 檔案瀏覽器 、 中可以執行常規的 檔案 / 目錄 管理操作,例如:
- 建立、重新命名、刪除、改變路徑、檢視目錄內容、……
- 在
Python
中,如果希望通過程式實現上述功能,需要匯入os
模組
檔案操作
序號 | 方法名 | 說明 | 示例 |
---|---|---|---|
01 | rename | 重新命名檔案 | os.rename(原始檔名, 目標檔名) |
02 | remove | 刪除檔案 | os.remove(檔名) |
目錄操作
序號 | 方法名 | 說明 | 示例 |
---|---|---|---|
01 | listdir | 目錄列表 | os.listdir(目錄名) |
02 | mkdir | 建立目錄 | os.mkdir(目錄名) |
03 | rmdir | 刪除目錄 | os.rmdir(目錄名) |
04 | getcwd | 獲取當前目錄 | os.getcwd() |
05 | chdir | 修改工作目錄 | os.chdir(目標目錄) |
06 | path.isdir | 判斷是否是檔案 | os.path.isdir(檔案路徑) |
提示:檔案或者目錄操作都支援 相對路徑 和 絕對路徑
4. 文字檔案的編碼格式
- 文字檔案儲存的內容是基於 字元編碼 的檔案,常見的編碼有
ASCII
編碼,UNICODE
編碼等
Python 2.x 預設使用 ASCII
編碼格式
Python 3.x 預設使用 UTF-8
編碼格式
ASCII
編碼
- 計算機中只有
256
個ASCII
字元 - 一個
ASCII
在記憶體中佔用 1 個位元組 的空間-
8
個0/1
的排列組合方式一共有256
種,也就是2 ** 8
-
UTF-8
編碼格式
- 計算機中使用 1~6 個位元組 來表示一個
UTF-8
字元,涵蓋了 地球上幾乎所有地區的文字 - 大多數漢字會使用 3 個位元組 表示
-
UTF-8
是UNICODE
編碼的一種編碼格式
4.2 Ptyhon 2.x 中如何使用中文
- 在 Python 2.x 檔案的 第一行 增加以下程式碼,直譯器會以
utf-8
編碼來處理 python 檔案
# *-* coding:utf8 *-*
這方式是官方推薦使用的!
- 也可以使用
# coding=utf8
unicode 字串
- 在
Python 2.x
中,即使指定了檔案使用UTF-8
的編碼格式,但是在遍歷字串時,仍然會 以位元組為單位遍歷 字串 - 要能夠 正確的遍歷字串 ,在定義字串時,需要 在字串的引號前 ,增加一個小寫字母
u
,告訴直譯器這是一個unicode
字串(使用UTF-8
編碼格式的字串)
# *-* coding=UTF-8 *-* my_str = u"hello這是字串" print(my_str) for c in my_str: print(c)