python 刪除文件夾和文件


一、三種刪除方法

python刪除文件和文件夾主要用到os模塊和shutil模塊,針對文件夾和文件的刪除,有幾種情況,直接上代碼:

文件刪除相關的所有操作,基本全部覆蓋

如果確實對你有幫助,右側打賞一分鼓勵一下吧,嘿咻嘿咻

import shutil
import os
from pathlib import Path

# 第一種:刪除一個文件夾,無論里面是否有文件或文件夾
# (不支持文件,文件夾不存在會報錯)
def del_files0(dir_path):
    shutil.rmtree(dir_path)

# 第二種 遞歸刪除dir_path目標文件夾下所有文件,以及各級子文件夾下文件,保留各級空文件夾
# (支持文件,文件夾不存在不報錯)
def del_files(dir_path):
    if os.path.isfile(dir_path):
        try:
            os.remove(dir_path) # 這個可以刪除單個文件,不能刪除文件夾
        except BaseException as e:
            print(e)
    elif os.path.isdir(dir_path):
        file_lis = os.listdir(dir_path)
        for file_name in file_lis:
            # if file_name != 'wibot.log':
            tf = os.path.join(dir_path, file_name)
            del_files(tf)
    print('ok')

# 第三種: 刪除dir_path目標文件夾下所有內容,保留dir_path文件夾
# (不支持文件,文件夾不存在會報錯)
def del_files2(dir_path):
    # os.walk會得到dir_path下各個后代文件夾和其中的文件的三元組列表,順序自內而外排列,
    # 如 log下有111文件夾,111下有222文件夾:[('D:\\log\\111\\222', [], ['22.py']), ('D:\\log\\111', ['222'], ['11.py']), ('D:\\log', ['111'], ['00.py'])]
    for root, dirs, files in os.walk(dir_path, topdown=False):
        print(root) # 各級文件夾絕對路徑
        print(dirs) # root下一級文件夾名稱列表,如 ['文件夾1','文件夾2']
        print(files)  # root下文件名列表,如 ['文件1','文件2']
        # 第一步:刪除文件
        for name in files:
            os.remove(os.path.join(root, name))  # 刪除文件
        # 第二步:刪除空文件夾
        for name in dirs:
            os.rmdir(os.path.join(root, name)) # 刪除一個空目錄


if __name__ == '__main__':
    dir_path = Path('./log').absolute()
    del_files2(dir_path)

 二、刪除失敗情況 PermissionError: [WinError 5] 拒絕訪問

刪除某些文件夾或者文件,比如git倉庫的時候,會報錯,顯示 PermissionError: [WinError 5] 拒絕訪問。

2.1 給python權限

這是因為沒有權限,可以參考>>解決辦法<<

 

2.2 刪除改為更名 

我感覺給與權限還需要修改這修改那的很麻煩,直接放棄刪除操作,替換為更改文件夾名字操作:

import random,os
dir_path = os.getcwd()  # 當前目錄絕對路徑D:\git_helper
print('當前目錄絕對路徑:', str(random.random())[-5:])
os.rename(src='../weebot_wxbot', dst=f'../weebot_wxbot{str(random.random())[-5:]}')

 


免責聲明!

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



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