python-os.rmdir與shutil.rmtree的區別和用法


每次寫腳本的時候,pycharm都會自動生成緩存文件__pycache__文件,在提交代碼的時候還得挨個刪除,於是自己寫一小段代碼自動循環刪除此目錄及下面的文件。

思路:

先將目錄及其下的文件讀取出來,然后刪除目錄下的文件,再清除空目錄即可。

第一步:

import os

利用os.walk(top, [,topdown][,onerror][,followlinks])遍歷目錄

其中:

top:指定要遍歷內容的根目錄

topdown:可選參數,用於指定遍歷順序。True表示自上而下遍歷(即先遍歷根目錄);若為False,則先遍歷最后一級子目錄。默認為True。

返回值:返回值包含3個元素的元組的生成器。其中,dirpath表示當前遍歷的路徑,是一個字符串;dirnames表示當前目錄下包含的子目錄,是一個列表;filenames表示當前路徑下包含的文件,是一個列表。

 

第二步:

os.remove:用來刪除文件

os.rmdir:用來刪除目錄,值的注意的是,若目錄下有文件,即目錄不為空,則刪除會失敗,拋出錯誤。

利用for循環,先刪除目錄下的文件,然后再清空目錄。這里需要注意,要從最后一級的子目錄開始刪除文件,防止文件沒有刪除干凈,導致刪除目錄失敗;

 

代碼如下:

1 import os 
  tuples = os.walk(top=top, topdown=False) 2   for root, dirs, files in tuples: 3   if "__pycache__" in root: 4    for name in files: 5   os.remove(os.path.join(root, name)) 6    os.rmdir(os.path.join(root))

 

 

方法二:經查閱,python有個模塊更加強大,可以用一個命令刪除目錄及其下的文件,這個模塊是shutil:

代碼如下:

import os
import shutil

tuples = os.walk(top=top, topdown=False)
for root, dirs, files in tuples:
    print(root, dirs, files)
    if "__pycache__" in root:
        shutil.rmtree(os.path.join(root))

 

python 真強大,只有想不到的,沒有它做不到的。


免責聲明!

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



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