1. 程式人生 > >python檔案和資料夾的操作os和shutil模組

python檔案和資料夾的操作os和shutil模組

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))

引用