15Python文件操作
生活随笔
收集整理的這篇文章主要介紹了
15Python文件操作
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文件處理
01. 文件的概念
1.1 文件的概念和作用
- 計算機(jī)的 文件,就是存儲在某種 長期儲存設(shè)備 上的一段 數(shù)據(jù)
- 長期存儲設(shè)備包括:硬盤、U 盤、移動硬盤、光盤…
1.2 文件的存儲方式
- 在計算機(jī)中,文件是以 二進(jìn)制 的方式保存在磁盤上的
文本文件和二進(jìn)制文件
- 文本文件
- 可以使用 文本編輯軟件 查看
- 本質(zhì)上還是二進(jìn)制文件
- 例如:python 的源程序
- 二進(jìn)制文件
- 保存的內(nèi)容 不是給人直接閱讀的,而是 提供給其他軟件使用的
- 例如:圖片文件、音頻文件、視頻文件等等
- 二進(jìn)制文件不能使用 文本編輯軟件 查看
02. 文件的基本操作
2.1 操作文件的套路
在 計算機(jī) 中要操作文件的套路非常固定,一共包含三個步驟:
- 讀 將文件內(nèi)容讀入內(nèi)存
- 寫 將內(nèi)存內(nèi)容寫入文件
2.2 操作文件的函數(shù)/方法
- 在 Python 中要操作文件需要記住 1 個函數(shù)和 3 個方法
| 01 | open | 打開文件,并且返回文件操作對象 |
| 02 | read | 將文件內(nèi)容讀取到內(nèi)存 |
| 03 | write | 將指定內(nèi)容寫入文件 |
| 04 | close | 關(guān)閉文件 |
- open 函數(shù)負(fù)責(zé)打開文件,并且返回文件對象
- read/write/close 三個方法都需要通過 文件對象 來調(diào)用
2.3 read 方法 —— 讀取文件
- open函數(shù)的第一個參數(shù)是要打開的文件名(文件名區(qū)分大小寫)
- 如果文件 存在,返回 文件操作對象
- 如果文件 不存在,會 拋出異常
- read 方法可以一次性 讀入 并 返回 文件的 所有內(nèi)容
- close方法負(fù)責(zé)關(guān)閉文件
- 如果 忘記關(guān)閉文件,會造成系統(tǒng)資源消耗,而且會影響到后續(xù)對文件的訪問
- 注意:read 方法執(zhí)行后,會把 文件指針 移動到 文件的末尾
提示
- 在開發(fā)中,通常會先編寫 打開 和 關(guān)閉 的代碼,再編寫中間針對文件的 讀/寫 操作!
文件指針
- 文件指針 標(biāo)記 從哪個位置開始讀取數(shù)據(jù)
- 第一次打開 文件時,通常 文件指針會指向文件的開始位置
- 當(dāng)執(zhí)行了read方法后,文件指針 會移動到 讀取內(nèi)容的末尾
- 默認(rèn)情況下會移動到 文件末尾
2.4 打開文件的方式
- open 函數(shù)默認(rèn)以 只讀方式 打開文件,并且返回文件對象
語法如下:f = open("文件名", "訪問方式")
| r | 以只讀方式打開文件。文件的指針將會放在文件的開頭,這是默認(rèn)模式。如果文件不存在,拋出異常 |
| w | 以只寫方式打開文件。如果文件存在會被覆蓋。如果文件不存在,創(chuàng)建新文件 |
| a | 以追加方式打開文件。如果該文件已存在,文件指針將會放在文件的結(jié)尾。如果文件不存在,創(chuàng)建新文件進(jìn)行寫入 |
| r+ | 以讀寫方式打開文件。文件的指針將會放在文件的開頭。如果文件不存在,拋出異常 |
| w+ | 以讀寫方式打開文件。如果文件存在會被覆蓋。如果文件不存在,創(chuàng)建新文件 |
| a+ | 以讀寫方式打開文件。如果該文件已存在,文件指針將會放在文件的結(jié)尾。如果文件不存在,創(chuàng)建新文件進(jìn)行寫入 |
| b | 讀寫二進(jìn)制文件,如rb、wb |
提示
- 頻繁的移動文件指針,會影響文件的讀寫效率,開發(fā)中更多的時候會以 只讀、只寫 的方式來操作文件
2.5 按行讀取文件內(nèi)容
- read 方法默認(rèn)會把文件的 所有內(nèi)容 一次性讀取到內(nèi)存
- 如果文件太大,對內(nèi)存的占用會非常嚴(yán)重
readline 方法
- readline 方法可以一次讀取一行內(nèi)容
- 方法執(zhí)行后,會把 文件指針 移動到下一行,準(zhǔn)備再次讀取
讀取大文件的正確姿勢
# 打開文件 file = open("README")while True:# 讀取一行內(nèi)容text = file.readline()# 判斷是否讀到內(nèi)容if not text:break# 每讀取一行的末尾已經(jīng)有了一個 `\n`print(text, end="")# 關(guān)閉文件 file.close()2.6 文件讀寫案例
小文件復(fù)制
# 1. 打開文件 file_read = open("README") file_write = open("README[復(fù)件]", "w")# 2. 讀取并寫入文件 text = file_read.read() file_write.write(text)# 3. 關(guān)閉文件 file_read.close() file_write.close()大文件復(fù)制
# 1. 打開文件 file_read = open("README") file_write = open("README[復(fù)件]", "w")# 2. 讀取并寫入文件 while True:# 每次讀取一行text = file_read.readline()# 判斷是否讀取到內(nèi)容if not text:breakfile_write.write(text)# 3. 關(guān)閉文件 file_read.close() file_write.close()03. 文件/目錄的常用管理操作
- 在 終端 / 文件瀏覽器中可以執(zhí)行常規(guī)的 文件 /目錄 管理操作,例如:
- 創(chuàng)建、重命名、刪除、改變路徑、查看目錄內(nèi)容、……
- 在 Python 中,如果希望通過程序?qū)崿F(xiàn)上述功能,需要導(dǎo)入 os 模塊
文件操作
| 01 | rename | 重命名文件 | os.rename(源文件名, 目標(biāo)文件名) |
| 02 | remove | 刪除文件 | os.remove(文件名) |
目錄操作
| 01 | listdir | 目錄列表 | os.listdir(目錄名) |
| 02 | mkdir | 創(chuàng)建目錄 | os.mkdir(目錄名) |
| 03 | rmdir | 刪除目錄 | os.rmdir(目錄名) |
| 04 | getcwd | 獲取當(dāng)前目錄 | os.getcwd() |
| 05 | chdir | 修改工作目錄 | os.chdir(目標(biāo)目錄) |
| 06 | path.isdir | 判斷是否是文件 | os.path.isdir(文件路徑) |
提示:文件或者目錄操作都支持 相對路徑 和 絕對路徑
04. 文本文件的編碼格式
4.1 ASCII 編碼和 UNICODE 編碼
ASCII 編碼
- 計算機(jī)中只有 256 個 ASCII 字符
- 一個 ASCII在內(nèi)存中占用1 個字節(jié)的空間
- 8 個 0/1 的排列組合方式一共有 256 種,也就是 2 ** 8
UTF-8 編碼格式
- 計算機(jī)中使用 1~6 個字節(jié) 來表示一個 UTF-8 字符,涵蓋了 地球上幾乎所有地區(qū)的文字
- 大多數(shù)漢字會使用 3 個字節(jié) 表示
- UTF-8 是 UNICODE 編碼的一種編碼格式
總結(jié)
以上是生活随笔為你收集整理的15Python文件操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 企业级信息系统开发讲课笔记3.4 基于J
- 下一篇: 《吊打面试官》系列-Redis常见面试题