python檔案和資料夾的操作os和shutil模組
阿新 • • 發佈:2018-12-15
python檔案和資料夾的操作
我們對檔案和資料夾經常會做一些操作,python 的os和shutil模組,可以實現很多的檔案和目錄的操作。
引入import os
。
os可以實現簡單的資料夾和檔案操作。
shutil可以實現複雜的檔案操作,比如對檔案的拷貝和複製。
引入import shutil
.
判斷路徑或檔案
os.path.isabs(...) # 是否是絕對路徑
os.path.exists(...) # 判斷是否真實存在
os.path.isdir(...) # 判斷是否是個目錄
os.path.isfile(...) #判斷是否是個檔案
- 使用示例
if not os.path.exists(restore_path):
os.makedirs(restore_path)
判斷是否存在,不存在時,則建立這個資料夾。
合併路徑
os.path.join(path1,path2)
這樣可以處理了不同作業系統的路徑分隔符。比如linux下,返回path1/path2.windows下返回path1\path2.
路徑名、檔名分隔
os.path.split(...) # 分隔目錄和檔名/資料夾名 os.path.splitdrive(...) # 分隔碟符(windows系統) os.path.splitext(..) #分隔檔案和副檔名
不要求目錄或檔案真實存在,只對字串進行操作。
工作目錄及建立資料夾操作
os.getcwd() #獲取當前工作目錄
os.chdir(...) #改變工作目錄
os.listdir(...) #列出目錄下的檔案
os.mkdir(...) #建立單個目錄
os.makedirs(...) #建立多級目錄
創建出錯的原因有:1.path已存在2.驅動器不存在3.磁碟已滿4 磁碟是隻讀的或者沒有寫許可權
刪除資料夾、檔案
os.rmdir(...) #只能刪除空資料夾,如需刪除資料夾及其下的檔案,需用shutil os.remove(...) #刪除單一檔案 shutil.rmtree(...) #刪除資料夾及其下所有檔案
- 使用示例
os.remove(project_zip)
file=os.path.join(upload_path,zip_name.split('.')[0])
if os.path.exists(file):
shutil.rmtree(file)
產生異常的可能原因: (1) 路徑不存在 (2) 路徑子目錄中有檔案或下級子目錄(os.rmdir) (3) 沒有操作許可權或只讀
重新命名資料夾/檔案
os.rename(oldname,newname)
異常原因:1.oldname不存在 2.newname已存在
複製、移動資料夾或檔案
shutil.copyfile("old","new") #複製檔案,只能是檔案
shutile.copytree('old','new') #複製資料夾,都只能是目錄,且new不存在
shutile.copy('old','new') #複製檔案/資料夾,複製 old 為 new(new是檔案,若不存在,即新建),複製 old 為至 new 資料夾(資料夾已存在)
shutil.move('old','new') #移動檔案/資料夾至new
- 使用示例
if not os.path.exists(db_folder):
os.makedirs(db_folder)
shutil.copy(os.path.join(db_prefolder,dbname),os.path.join(db_folder,dbname))