天天看點

【python 基礎篇 十五】python的檔案操作

作者:煩人的星辰

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(“檔案夾名”) 輸出一個清單 清單内為檔案名