1. 文件操作 open() 文件句柄 open()打開一個文件, 獲取的是文件句柄 read() #讀取全部內容 read(n)#讀取前n個字元 readline()#讀取一行 且讀取出來末尾都有\n readlines()#讀取全部 每一⾏形成一個元素並放到列表 註意: 讀取完的文件句柄一定要關 ...
1. 文件操作 open() 文件句柄
open()打開一個文件, 獲取的是文件句柄
read() #讀取全部內容
read(n)#讀取前n個字元
readline()#讀取一行 且讀取出來末尾都有\n
readlines()#讀取全部 每一⾏形成一個元素並放到列表
註意: 讀取完的文件句柄一定要關閉 f.close()
write() 如果沒有⽂件. 則會創建文件, 如果文件存在. 則將原件中原來的內容刪除, 再寫入新內容
文件句柄是一個可迭代對象
for line in f: 遍歷文件中的內容
路徑的問題:
\n \t 轉義字元。 有固定的含義的。 推薦用r
1. 絕對路徑
從磁碟根目錄尋找
2. 相對路徑
從當前程式運行的文件夾內尋找
2. 文件操作的相關模式Mode
r: 只讀
w: 只寫
a: 追加
r+:讀寫
w+:寫讀
a+:追加讀 a+模式下, 不論先讀還是後讀. 都是讀取不到數據的.
只要是a或者ab, a+ 都是在文件的末尾寫入. 不論游標在任何位置.
非文本文件(b是bytes)
wb模式下. 可以不指定打開文件的編碼. 但是在寫文件的時候必須將字元串轉化成utf-8的bytes數據
rb
wb
ab
r+b
w+b
a+b
深坑請註意: 在r+模式下. 如果讀取了內容. 不論讀取內容多少. 游標顯示的是多少. 再寫入或者操作文件的時候都是在結尾進行的操作.
3. 相關操作
1. seek()移動游標(重點)——seek(n) 游標移動到n位置, 註意, 移動的單位是byte. 所以如果是UTF-8的中文部分要是3的倍數.
seek的第二個參數表⽰的是從哪個位置進⾏偏移, 預設是0, 表⽰開頭, 1表⽰當前位置, 2表⽰結尾
seek(0) 開頭
seek(0,2) 移動到末尾
2. tell() 獲取游標所在的位置
3. truncate() 截斷文件
4. 文件修改
with open(xxx) as 句柄, \
open(xxxxx)as xxx
不用手動關閉文件句柄
文件修改的步驟
1. 從原文件中讀取數據。
2. 寫入到副本文件中
3. 刪除源文件
4. 把副本重命名成原文件
import os
os.remove()
os.rename()