一、為什麼要使用python處理檔案
檔案處理管理可分為兩種,一種是視覺化、手動化,學習成本低,處理數量有限。另一種是程式設計化、自動化,有一定學習成本,可以基於邏輯處理。計算機的常項是對既定規則的發揮,這個發揮作用於"批次"這個層面。
二、相對路徑與絕對路徑
相對路徑:被操作的檔案相對你當前執行的程式來說的路徑叫相對路徑。
絕對路徑:檔案在計算機絕對的路徑或者說位置叫做絕對路徑。
三、python處理檔案的常用命令
python檔案處理的三個常用庫:
import os #查、改
import shutil #複製、剪下
import zipfile #打包、壓縮
os的常用方法,path路徑系列
os.path.abspath(引數) #獲取當前檔案的絕對路徑 c:/project/X/XXX.txt
os.path.isdir(引數) #獲取當前路徑檔案是否為資料夾-布林
os.path.isfile(引數) #獲取當前路徑檔案是否為檔案-布林
os.path.basename(引數) #獲取當前路徑的結尾名字 c:/project/xxx.txt
os.path.split(引數) #以路徑檔名切分列表['c:/project/','xxx.txt']
os.path.join(引數) #(‘aa’,'bb','x.txt')aa/bb/x.txt
os.path.getsize(引數) #以位元組單位(B)返回當前檔案大小換算KB除以1024 換算MB再除以1024
輸出壓縮檔案的絕對路徑
import os
print(os.path.abspath('abc.zip'))
輸出結果:
判斷一個路徑是否是目錄
import os
print(os.path.isdir('abc.zip'))
輸出結果:
import os
print(os.path.isdir('D:\PythonProject\Python_001\pythonProject'))
輸出結果:
判斷是否為檔案
import os
print(os.path.isfile('abc.zip'))
輸出結果:
輸出檔名
import os
print(os.path.basename('D:\\PythonProject\\Python_001\\pythonProject\\abc.zip'))
輸出結果:
切分路徑與檔名
import os
print(os.path.split('D:\\PythonProject\\Python_001\\pythonProject\\abc.zip'))
輸出結果:
連線檔案路徑
import os
print(os.path.join('D:\\','PythonProject\\Python_001\\pythonProject','abc.zip'))
輸出結果:
os常用的方法(讀、改、查系列)
os.getcwd() #獲取當前工作絕對路徑 c:/project/X/
os.listdir(引數) #獲取當前路徑下所有檔案/資料夾
os.remove(引數) #刪除檔案(注意不是目錄)
os.removedirs(引數) #刪除多級目錄,目錄必須要為空(注意!從底層往上層全部刪除)
os.rmdir(引數) #刪除一個目錄,目錄必須要為空
os.mkdir/makedirs(引數) #建立一級或多級目錄,這裡s是多級
shutil下,常用方法(複製、剪下系列)
shutil.rmtree(資料夾) #刪除路徑下的所有檔案、目錄,無論是否有檔案(特別注意這個跟os.remove rmdir removedirs的區別)
shutil.copytree(源目錄,目標目錄) #資料夾全量(包含下屬所有層次)複製
shutil.copy(原始檔,目標檔案) #檔案複製
shutil.move(原始檔夾,目標資料夾) #資料夾/檔案剪下
使用zipfile完成壓縮和解壓
壓縮檔案
import os
import zipfile
# 建立一個壓縮寫入物件
z=zipfile.ZipFile('abc.zip','w')
for x in os.listdir('file200'):
#具體向壓縮包寫入操作
z.write('file200'+os.sep+x)
z.close()
程式結果執行如下:
解壓檔案
import zipfile
# 建立一個壓縮寫入物件
z=zipfile.ZipFile('abc.zip','r')
for file in z.namelist():
#具體向壓縮包寫入操作
z.extract(file,"tmp/")
程式結果執行如下: