1.檔案介紹
- 檔案:資料存放的容器
- 檔案的作用:持久化的存儲資料内容
- 檔案組成:
- 檔案名:如果同級目錄下,不允許同名檔案存在
- 擴充名 :一般不同的擴充名,對應着不同的檔案格式,不同的檔案格式,有着不同的存儲約定,友善程式處理。
- 檔案内容:一般分為 文本檔案(txt,doc,xls) 二進制檔案(圖檔,視訊,音樂)
2.檔案的使用流程
- 打開
- open("檔案",“模式”)
- 檔案:指定檔案路徑
- 模式:控制操作模式
- r 以隻讀方式打開檔案
- 這個是預設參數 檔案的指針将會放在檔案的開頭
- 注意:檔案不存在,會報錯
- w 以隻寫方式打開檔案
- 檔案的指針将會放在檔案的開頭,是以,寫入心得内容,會覆寫舊的内容
- 注意:檔案不存在,會自動建立一個新檔案
- a 以追加方式(隻寫)打開檔案
- 檔案的指針将會放在檔案的結尾,是以,寫入的内容,會增加到檔案末尾
- 注意:檔案不存在,會自動建立一個新檔案
- 增加b 以為二進制格式進行操作檔案讀寫
- rb wb ab
- 如果檔案是二進制檔案,則選擇此項 例如:圖檔 視訊 音頻
- 增加+ 代表都是以“讀寫模式”進行打開
- r+ w+ a+ rb+ rw+ ra+
#r 的讀操作
#1. 打開檔案
#相對路徑,相對于哪一個目錄下面的指定檔案
f = open.("a.txt","r")
#2. 讀操作
content = f.read()
print(content)
#3. 關閉檔案
f.close()
#w 的寫操作
#1. 打開檔案
#相對路徑,相對于哪一個目錄下面的指定檔案
f = open.("a.txt","w")
#2. 讀操作
f.write("123456")
print(content)
#3. 關閉檔案
f.close()
#wb 的寫操作
#1. 打開檔案
#相對路徑,相對于哪一個目錄下面的指定檔案
toFile = open.("xx.jpg","wb")
#2. 讀操作
content = fromContent[0:len(fromContent)//2]
toFile.write(content)
#3. 關閉檔案
toFile.close()
- 讀寫
- 定位
- f.seek(偏移量,[0,1,2])
- [0,1,2]
- 0 代表開頭 也是預設
- 1 代表目前位置
- 2 代表檔案末尾
- 注意:文本檔案的操作模式下(不帶b),隻能寫0 。如果想要寫1或者2,必須在二進制檔案操作模式下(帶b)
- f.tell( ) 輸出檔案指針在哪裡
- 讀
- f.read(位元組數) 從目前檔案指針的位置一直讀到最後
- 位元組數:代表讀取檔案内容長度。預設是檔案全部内容
- 下标會自動後移
- f.readline([limit]) 讀取一行資料
- limit 限制的最大位元組數,最長讀取内容
- f.readlines()
- 會自動的将文字按換行符進行處理,将處理好的每一行組成一個清單傳回
- for in
- 可以直接周遊f本身
- 也可以周遊行清單
- 判斷是否可讀
- f.readable() 判斷檔案是否可讀
- 注意
- 一般檔案特别大的時候,可以使用readline方法。按行加載,可節省記憶體,但相比于其他兩個讀取方法,性能較低
- read和readline([limit]),一次性讀取檔案索引内容,占用記憶體,處理性能高
- 寫
- f.write("内容")
- 傳回值是寫入的位元組長度
- f.writeable()
- 判斷是否可寫入
#定位案例
#1. 打開檔案
f = open.("a.txt","r") #a.txt的内容是 123456789
#2. 讀操作
print(f.tell())#輸出 0
f.seek(2)
print(f.tell())#輸出 2
print(f.read())#輸出時 3456789
print(f.tell())#輸出
#3. 關閉檔案
f.close()
#for in案例
#方式一
f = open.("a.txt","r")
#a.txt的内容是
#1
#2
#3
for i in f:
print(i,end="")
#1
#2
#3
f.close()
#方式二
f = open.("a.txt","r")
content = f.readlines()
for i in content:
print(i,end="")
f.close()
- 關閉
- f.close()
- 關閉一個打開的檔案
- 關閉的原因
- 可以釋放系統資源
- 會立即清空緩沖區的資料内容到磁盤空間
- f.flush()
- 立即清空緩存區的資料内容到磁盤空間
3.檔案的相關操作
- 子產品 import OS
- 操作
- 重命名
- os.rename("原檔案名/原檔案夾名",“目标檔案名/目标檔案夾名”)
- 修改檔案夾或者檔案名稱
- os.renames(“ 路徑 ”,“路徑”)
- 修改嵌套的檔案或者檔案夾
-
#重命名
import os
os.rename("a.txt","b.txt")#把檔案a.txt重命名為b.txt
os.rename("first","onr")#把檔案夾first重名名為one
os.renames("one/one.txt","first/first.txt")#把one檔案夾和one檔案夾下的one檔案,修改為first檔案夾和first檔案夾下的first.txt檔案
- 删除
- 删除檔案
- os.remove("檔案路徑")
- 檔案不存在就會報錯
- 删除目錄
- os.removedirs(path)
- path 檔案路徑
- 可以遞歸的删除目錄,如果檔案夾非空,會報錯
- 建立檔案夾
- os.mkdir(“檔案夾名稱”,[mode])
- 不能遞歸建立,如果檔案夾存在就會報錯
- mode 數字模式權限
- 擷取目前目錄
- os.getcwd()
- 改變預設目錄
- os.chdir("目标目錄")
- 擷取目錄内容清單
- os.listdir(“./”)
- os.listdir(“檔案夾名”) 輸出一個清單 清單内為檔案名