python刪除指定目錄下的文件和文件夾的實(shí)現(xiàn)
在日常的辦公中,我們可以利用Python批量刪除文件和文件夾,但一定要注意這一過程的不可逆轉(zhuǎn)性,因此在操作前一定要做好備份。
下面我們來介紹兩種執(zhí)行遍歷、篩選和刪除的兩種方法。主要采用的是os模塊和pathlib模塊。刪除文件時,我們采用的是os.remove(),刪除目錄我們用的是shutil.rmtree()
一、os刪除法
我們可以用os模塊中的listdir()來遍歷目錄下面的文件,如果是當(dāng)前目錄就用path = os.curdir來指定,然后用shutil來刪除,非常簡單、實(shí)用和方便。
首先了解幾個關(guān)鍵方法:
os.getcwd()該函數(shù)可以返回當(dāng)前所在的目錄。
files = os.getcwd() # files中保存的是當(dāng)前的執(zhí)行目錄
os.path.splitext()該函數(shù)可以分解文件名的擴(kuò)展名。os.listdir(file_path)該函數(shù)可以列出給定路徑下的所有文件與文件夾。os.path.join(file_path, file_name)該函數(shù)可以將路徑與文件名拼接起來。os.path.isfile(path)該函數(shù)可以判斷指定的文件路徑是否為文件。os.path.isdir(path)該函數(shù)可以判斷指定的路徑是否為文件夾。os.remove(filename)該函數(shù)可以刪除指定路徑的文件。
算法過程是,首先構(gòu)造函數(shù),檢查指定目錄是否為空,如果不為空,使用OS和迭代刪除的方法,刪除test目錄下的所有目錄和文件,代碼如下:
import os
import shutil
def del_file(path):
if not os.listdir(path):
print('目錄為空!')
else:
for i in os.listdir(path):
path_file = os.path.join(path,i) #取文件絕對路徑
print(path_file)
if os.path.isfile(path_file):
os.remove(path_file)
else:
del_file(path_file)
shutil.rmtree(path_file)
if __name__ == '__main__':
path=r'test'
del_file(path)
二、Pathlib刪除法
pathlib是比os更加強(qiáng)大的一個模塊。它可以執(zhí)行遍歷、刪除等多項(xiàng)命令。
使用pathlib,shutil,刪除更加快捷。unlink()刪除文件,rmtree()刪除目錄,一氣呵成。
import shutil
from pathlib import Path
def del_file(path):
for elm in Path(path).glob('*'):
print(elm)
elm.unlink() if elm.is_file() else shutil.rmtree(elm)
if __name__ == '__main__':
path=r'test'
del_file(path)
三、學(xué)后反思
1. pathlib中有很多不錯的方法,如unlink, glob,replace等,靈活運(yùn)用可以解決多項(xiàng)問題。
2. 如果pathlib用的不熟,可以把os學(xué)好可基本可以滿足的日常需求。
3.使用過程中可以利用列表推導(dǎo)式,和python中的三元運(yùn)算符一行代碼就搞定,可以進(jìn)一步優(yōu)化代碼。
到此這篇關(guān)于python刪除指定目錄下的文件和文件夾的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)python刪除指定目錄文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python+opencv 實(shí)現(xiàn)圖片文字的分割的方法示例
這篇文章主要介紹了Python+opencv 實(shí)現(xiàn)圖片文字的分割的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
windows中安裝Python3.8.0的實(shí)現(xiàn)方法
這篇文章主要介紹了windows中安裝Python3.8.0的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
django 簡單實(shí)現(xiàn)登錄驗(yàn)證給你
這篇文章主要介紹了django 簡單實(shí)現(xiàn)登錄驗(yàn)證給你,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-11-11
一條命令解決mac版本python IDLE不能輸入中文問題
本文通過一條命令幫助大家解決mac版本python IDLE無法輸入中文問題,需要的朋友可以參考下2018-05-05
Python實(shí)現(xiàn)基于二叉樹存儲結(jié)構(gòu)的堆排序算法示例
這篇文章主要介紹了Python實(shí)現(xiàn)基于二叉樹存儲結(jié)構(gòu)的堆排序算法,結(jié)合實(shí)例形式分析了Python二叉樹的定義、遍歷及堆排序算法相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-12-12
Python中利用sorted()函數(shù)排序的簡單教程
這篇文章主要介紹了Python中利用sorted()函數(shù)排序的簡單教程,sorted()函數(shù)有返回值,在Python的排序?qū)崿F(xiàn)中發(fā)揮著相當(dāng)重要的作用,需要的朋友可以參考下2015-04-04
NumPy 通用函數(shù)(ufunc)的實(shí)現(xiàn)
本文主要介紹了NumPy 通用函數(shù)(ufunc)的實(shí)現(xiàn),包括數(shù)學(xué)運(yùn)算類、統(tǒng)計(jì)與聚合類和數(shù)組操作類,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2026-01-01
Python機(jī)器學(xué)習(xí)庫sklearn(scikit-learn)的基礎(chǔ)知識和高級用法
Scikit-Learn是 Python 最流行的機(jī)器學(xué)習(xí)庫之一,它提供了各種工具來實(shí)現(xiàn)、評估和探索各種學(xué)習(xí)算法,用于,各種機(jī)器學(xué)習(xí)任務(wù),在本教程中,我們將介紹 Scikit-Learn 的基礎(chǔ)知識和一些高級用法,并提供一些實(shí)例代碼來幫助我們更好地理解2023-07-07

