python筆記68 - os.remove()和shutil.rmtree()刪除文件夾


前言

使用os.remove()刪除文件夾的時候出現PermissionError: [WinError 5] 拒絕訪問
shutil.rmtree()遞歸刪除一個目錄以及目錄內的所有內容

os.remove() 刪除文件

os.remove() 方法用於刪除指定路徑的文件。

如果指定的路徑是一個目錄,將拋出異常。
使用示例

import os
p = r'D:\soft\1.jpg'
os.remove(p)

如果刪除的是一個文件,文件可以是圖片,文本,excel等(注意是文件不是文件夾)
如果不存在此文件會拋出異常FileNotFoundError: [WinError 2] 系統找不到指定的文件

當我們想刪除一個文件夾的時候,刪除整個logs文件

此時會拋出異常 PermissionError: [WinError 5] 拒絕訪問
os.remove()只能刪除一個文件,並且文件路徑要存在,刪文件夾會報錯。

os.removedirs() 遞歸刪除目錄

os.removedirs() 方法用於遞歸刪除目錄。但目錄必須是空的。

import os
p = r'D:\soft\logs'
os.removedirs(p)

如果目錄不為空,會拋出異常OSError: [WinError 145] 目錄不是空的,所以這個功能比較雞肋,我們一般希望能直接刪除整個文件夾以及子目錄

shutil.rmtree() 刪除這個文件夾目錄

shutil.rmtree() 遞歸刪除一個目錄以及目錄內的所有內容

import shutil
p = r'D:\soft\logs'
shutil.rmtree(p)

如果文件路徑不存在會拋出異常:FileNotFoundError: [WinError 3] 系統找不到指定的路徑。

shutil模塊其它方法

shutil.copyfile( src, dst)   #從源src復制到dst中去。 如果當前的dst已存在的話就會被覆蓋掉
shutil.move( src, dst)  #移動文件或重命名
shutil.copymode( src, dst) #只是會復制其權限其他的東西是不會被復制的
shutil.copystat( src, dst) #復制權限、最后訪問時間、最后修改時間
shutil.copy( src, dst)  #復制一個文件到一個文件或一個目錄
shutil.copy2( src, dst)  #在copy上的基礎上再復制文件最后訪問時間與修改時間也復制過來了,類似於cp –p的東西
shutil.copy2( src, dst)  #如果兩個位置的文件系統是一樣的話相當於是rename操作,只是改名;如果是不在相同的文件系統的話就是做move操作
shutil.copytree( olddir, newdir, True/Flase) #把olddir拷貝一份newdir,如果第3個參數是True,則復制目錄時將保持文件夾下的符號連接,如果第3個參數是False,則將在復制的目錄下生成物理副本來替代符號連接
shutil.rmtree( src )   #遞歸刪除一個目錄以及目錄內的所有內容


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM