當前位置:首頁 » 編程語言 » python刪除目錄

python刪除目錄

發布時間: 2023-05-13 20:40:38

python其實很簡單 第十六章 目錄管理

為實現「按名存取」,必須建立文件名與輔存空間中物理地址的對應關系,體現這種對應關系的數據結構稱為文件目錄。文件目錄表目至少要包含文件名、文件的類型、文件的長度、訪問許可權、建立時間、訪問時間和文件存儲地址等內容。通過前面一章的介紹,我們已經知道在文件信息中已經包含了文件名、文件類型訪問許可權等信息,而存儲地址的信息則包含在目錄信息中。

16.1路徑

路徑通常用一個字元串來表示,可以按照路徑信息定位到一個目錄或文件。如:「C:UsersAdministratorPictures1.jpg」這個信息可以非常方便的找到這個圖片文件,「C:UsersAdministratorPictures」這個信息可以幫助我們找到更多的圖片文件。

這里所說的「路徑」和上網時碰到的「地址」含義比較相似,互聯網就相當於將個人電腦可以訪問的范圍擴大了,互聯網中的地址也是對應某一個存儲空間的路徑,按照地址可以訪問互聯網上的信息,就如同按照路徑可以找到計算機中的文件一樣。

在Python中,可以導入 os模塊 來進行目錄操作。

1、獲取當前工作目錄getcwd()函數

例:

import os

print(os.getcwd())

運行結果:

C:

這個路徑是當前Python IDLE所在的地址。

2、獲取文件的絕對路徑abspath()函數

abspath()函數是os模塊的子模塊path提供的一個函數。用法舉例如下:

import os

print(os.path.abspath(r'test.txt'))

運行結果:

C: est.txt


16.2 目錄操作類函數

1、判斷目錄是否存在exists()函數

exists()函數是os模塊的子模塊path中的函數。使用方法舉例如下:

import os

print(os.path.exists(r'C:UsersAdministratorPictures1.jpeg'))

輸出結果:

True

2、創建目錄mkdir()函數和makedirs()函數

mkdir()函數和makedirs()函數都是由os模塊提供的,下面舉例說明用法和區別。

例1:

import os

path='d:test'

if not os.path.exists(path):

os.makedirs(path)

print('該文件目錄創建成功!')

如果目錄d: est已存在,則不再創建;若不存在,則創建。

例2:

import os

path='d:testtest1test11'

if not os.path.exists(path):

os.makedirs(path)

print('該文件目錄創建成功!')

雖然目錄d: est已存在,但可以在其下繼續創建子目錄。上面的代碼可以成功地創建d: est est1 est11目錄。

mkdir()函數和makedirs()函數用法基本一樣,不同之處在於mkdir()函數只能能創建一級目錄。

3、刪除目錄函數rmdir()函數

rmdir()函數是由os模塊提供的。

例如:通過上面的例子已經建立了d: est est1 est11目錄,現在去刪除子目錄test11(此子目錄為空目錄),代碼如下:

import os

os.rmdir('d:testtest1test11')

如果要刪除的目錄非空(其下還包含有文件或文件夾),則不能刪除,並且出現Windows文件操作錯誤的提示(Python是調用操作系統命令完成文件和目錄操作的)。譬如d: est目錄下含有有子目錄,則不能對其進行如下刪除操作。

import os

os.rmdir('d:test')

此時,會出現如下錯誤提示:

Traceback (most recent call last):

File "C:/Users/zym/AppData/Local/Programs/Python/Python39/4.py", line 10, in

os.rmdir('d:test')

OSError: [WinError 145] 目錄不是空的。: 'd:test'


4、刪除非空目錄函數rmtree()函數

rmtree()函數是由Python內置的標准模塊shutil提供的,可以刪除目錄及目錄下的文件和子目錄。如刪除d: est目錄及其下的子目錄和文件,可用如下代碼:

import shutil

shutil.rmtree('d:test')

5、遍歷目錄walk()函數

walk()函數是由os模塊提供的。

語法格式:

os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])

其中,top是所要遍歷的目錄的地址;topdown為可選參數,為 True時自上而下遍歷 目錄,為False時自下而上遍歷目錄,默認值為True;onerror為可選參數,用於指定異常處理方式,默認為忽略;followlinks為可選參數,如果為 True,則會遍歷目錄下的快捷方式(linux 下是軟連接 symbolic link )實際所指的目錄(默認關閉),如果為 False,則優先遍歷 top 的子目錄。

該函數的返回值為一個三元組(root,dirs,files)。root 所指的是當前正在遍歷的這個文件夾的本身的地址;dirs 是一個 list ,內容是該文件夾中所有的目錄的名字(不包括子目錄);files 同樣是 list , 內容是該文件夾中所有的文件(不包括子目錄)。

例:遍歷d: est目錄及其子目錄下的所有子目錄和文件:

d: est目錄及其下的子目錄和文件

import os

path='d:test'

tups=os.walk(path) # 函數walk()的返回值為三元組


for root,dirs,files in tups: # 遍歷這個三元組

for name in dirs: #遍歷存放目錄值的元組

print('dir:',os.path.join(root,name))

for name in files: #遍歷存放文件名值的元組

print('file:',os.path.join(root,name))


運行結果如下:

dir: d: est est1

dir: d: est est1 est11

dir: d: est est1新建文件夾

file: d: est est1新建文本文檔.txt

file: d: est est1 est11新建文本文檔.txt

② Python刪除文件命令合集

python刪除文件夾或者文件時;可以使用os和shutil模塊相關的命令

os模塊提供的方法

1.os.remove(path)   #path是文件路徑,如果path是一個文件譽世夾路徑時,會拋出OSError錯誤

2.os.unlink(path)  #path功能和remove一致,但是刪除一個正在使用的文件時會報錯

3.os.rmdir(path)  #path是文件夾路徑,注意此時文件夾是慧粗要空才能被刪除,如果文件夾不為空時,要先刪除文件夾下的文件後,才能使用此命令

4.os.removedirs(path) 慶碧肢 #path遞歸地刪除目錄,如果子目前成功被刪除,則將會成功刪除父目錄,子目錄沒有成功刪除,將拋出異常

shutil模塊提供的方法有:

1.shutil.rmtree(dir)  #dir為目錄,可以刪除有內容的目錄

2.shutil.rmdir(dir)  #dir為目錄,只能刪除空目錄

③ python--目錄操作

一、os.getcwd()

獲取當前工作目錄,即當前Python腳本工作的目錄路徑。

二、os. chdir(path)

改變當前腳本工作目錄;相當於shell下的cd命令。

三、os.pardir

返回當前目錄的父目錄('..')

四、獲取當前使用的操作系統類型(其中 『nt』 是 windows,』posix』 是linux 或者 unix)。

五、os.mkdir(path [, mode=0777])

生成單級目錄;相當於linux中的mkdir dirname。參數mode表示生成的目錄的許可權,默認是超級許可權,也就是0777。如果重復創建,會報錯

六、os.makedirs(path [, mode=0777])

可生成多層遞歸目錄,父目錄如果不存在,遞歸生成。參數mode表示生成的目錄的許可權,默認是超級許可權,也就是0777。

七、os.removedirs(path)

若目錄為空,則刪除,並遞歸到上一級目錄,如若也為空,則刪除,依次類推。

八、os.rmdir(path)

刪除單級空目錄,若目錄不為空則無法刪除,會報錯;相當Linux中的rmdir dirname。

九、os.listdir(path)

列出指定目錄下的所有文件和子目錄,包括隱藏文件或目錄,並以列表形式返回。

十、os.remove(filePath)

刪除一個指定的文件,參數filePath表示文件所在的路徑。

注意:該方法只能刪除文件,不能刪除目錄。

十一、os.rename(oldname, newname)

重命名文件/目錄。

十二、os.access(path, mode)

輸出文件許可權模式。

十三、os.chmod(path, mode)

修改文件的許可權。

十四、os.walk(top, topdown=True, onerror=None, followlinks=False)

➢top:表示需要遍歷的目錄樹的路徑。

➢topdown的默認值是「True」,表示首先返回目錄樹下的文件,然後遍歷目錄樹下的子目錄。值設為False時,則表示先遍歷目錄樹下的子目錄,返回子目錄下的文件,最後返回根目錄下的文件。

➢onerror的默認值是「None」,表示忽略文件遍歷時產生的錯誤。如果不為空,則提供一個自定義函數提示錯誤信息後繼續遍歷或拋出異常中止遍歷。

➢該函數返回一個列表,列表中的每一個元素都是一個元組,該元組有3個元素,分別表示每次遍歷的路徑名,目錄列表和文件列表。

➢默認情況下,os.walk 不會遍歷軟鏈接指向的子目錄,若有需要請將followlinks設定為true

十五、os.path.split(path)

將path分割成目錄和文件名(事實上,如果你完全使用目錄,它也會將最後一個目錄作為文件名而分離,同時它不會判斷文件或目錄是否存在),並存於元組中返回。

十六、os.path.exists(path)

判斷path是否存在,如果存在返回True,否則返回False。

十七、os.path.isfile(path)

判斷path是否是文件,如果是返回True,否則返回False。

十八、os.path.isdir(path)

判斷path是否是目錄,如果是目錄返回True,否則返回False。

十九、os.path.getsize(name)

獲得文件大小,如果name是目錄返回結果是0L或者4096L;如果name代表的目錄或文件不存在,則會報WindowsError異常。

二十、os.path.join(a, *p)

連接兩個或更多的路徑名,中間以「\」分隔,如果所給的參數中都是絕對路徑名,那先給的絕對路徑將會被丟棄。

二十一、os.path.getatime(filename)

返迴文件的最後訪問時間,返回的是時間戳。

二十二、os.path.getctime(filename)

以時間戳的形式返迴文件或目錄的創建時間,在Unix系統上是文件最近更改的時間,在Windows上是文件或目錄的創建時間。

1.基礎題:

    檢驗給出的路徑是否是一個文件:os.path.isfile("D:\\test.txt")

    檢驗給出的路徑是否是一個目錄:os.path.isdir("D:\\test.txt")

    判斷是否是絕對路徑:os.path.isabs("D:\\test.txt")

    檢驗給出的路徑是否真地存在:

2.返回一個路徑的目錄名和文件名 :os.listdir("D:\\")

3.分離文件名與擴展名 :os.path.splitext("D:\\test.txt")

4.找出某個目錄下所有的文件,並在每個文件中寫入「gloryroad」 :

>>> for files in os.walk("D:\\test"):

...    print(files)

...

('D:\\test', [], ['a.txt', 'b.txt', 'test.txt', 'test1.txt'])

>>> with open("D:\\test\\a.txt","w+") as f:

...    f.write("gloryroad")

5.如果某個目錄下文件名包含txt後綴名,則把文件後面追加寫一行「被我找到了!」

6. 命題練習:

    1) 一個目錄下只有文件(自己構造),拷貝幾個文件(手工完成)

    2 )用listdir函數獲取所有文件,如果文件的創建時間是今天,那麼就在文件裡面寫上文件的路徑、文件名和文件擴展名

    3) 如果不是今天創建(獲取文件的創建時間,並轉化為時間格式,判斷是否今天),請刪除

    4 )計算一下這個程序的執行耗時

7.刪除某個目錄下的全部文件

8.統計某個目錄下文件數和目錄個數

9.使用程序建立一個多級的目錄,在每個目錄下,新建一個和目錄名字一樣的txt文件

10. 查找某個目錄下是否存在某個文件名

11. 用系統命令拷貝文件

12.輸入源文件所在路徑和目標目錄路徑,然後實現文件拷貝功能

13.遍歷某個目錄下的所有圖片,並在圖片名稱後面增加

14、遍歷指定目錄下的所有文件,找出其中佔用空間最大的前3個文件

15、過濾py源碼中的#注釋,另存為文件result.py,並執行result.py,斷言是否執行成功

16、文件訪問,提示輸入數字 N 和文件 F, 然後顯示文件 F 的前 N 行.

17、從命令行接受1個路徑如:c:\a\b\c\1.py, 實現1個函數創建目錄a\b\c,創建文件1.py,實現1個函數刪除已創建的目錄及文件

18、有一個ip.txt,裡面每行是一個ip,實現一個函數,ping 每個ip的結果,把結果記錄存到ping.txt中,格式為ip:0或ip:1 ,0代表ping成功,1代表ping失敗

19、實現DOS命令執行功能,接受輸入命令並執行,然後把執行結果和返回碼列印到屏幕

20、文件訪問

    訪問一存在多行的文件,實現每隔一秒逐行顯示文本內容的程序,每次顯示文本文件的 5行, 暫停並向用戶提示「輸入任意字元繼續」,按回車鍵後繼續執行,直到文件末尾。

    顯示文件的格式為:[當前時間] 一行內容,比如:[2016-07-08 22:21:51] 999370this is test

④ 如何用python刪除特定文件夾

#!/usr/bin/env python
import os
import shutil

delList = []
delDir = "/home/test"
delList = os.listdir(delDir )

for f in delList:
filePath = os.path.join( delDir, f )
if os.path.isfile(filePath):
os.remove(filePath)
print filePath + " was removed!"
elif os.path.isdir(filePath):
shutil.rmtree(filePath,True)
print "Directory: " + filePath +" was removed!"

shutil是一個高層次的文件操作模塊。True參數表示ignore_errors(忽略拷貝時候的錯誤)。
類似於高級API,而且主要強大之處在於其對文件的復制與刪除操作更是比較支持好。

[附] os模塊(庫)的使用
有關文件夾與文件的查找,刪除等功能 在 os 模塊中實現。

一、取得當前目錄
#1.1
s = os.getcwd()
# s 中保存的是當前的執行目錄(即執行所在的文件夾)
[注意]
如果是要獲得程序運行的當前目錄所在位置,那麼可以使用os模塊的os.getcwd()函數。
如果是要獲得當前執行的腳本的所在目錄位置,那麼需要使用sys模塊的sys.path[0]變數或者sys.argv[0]來獲得

#1.2
import os
import time

folder = time.strftime(r"%Y-%m-%d_%H-%M-%S",time.localtime())
os.makedirs(r'%s/%s'%(os.getcwd(),folder))

二、更改當前目錄

os.chdir( "/root/123")
#將當前目錄設為 "/root/123"
#說明: 當指定的目錄不存在時,引發異常。

三、將一個路徑名分解為目錄名和文件名兩部分
fpath , fname = os.path.split( "你要分解的路徑")
例如:
a, b = os.path.split( "/root/123/test.txt" )
print a
print b

顯示:
/root/123/
test.txt

四、分解文件名的擴展名
fpathandname , fext = os.path.splitext( "你要分解的路徑")

例如:
a, b = os.path.splitext( "/root/123/test.txt" )
print a
print b

顯示:
/root/123/test
.txt

五、判斷一個路徑( 目錄或文件)是否存在
b = os.path.exists( "你要判斷的路徑")

返回值b: True 或 False

六、判斷一個路徑是否文件
b = os.path.isfile( "你要判斷的路徑")

返回值b: True 或 False

七、判斷一個路徑是否目錄
b = os.path.isdir( "你要判斷的路徑")

返回值b: True 或 False

八、獲取某目錄中的文件及子目錄的列表
L = os.listdir( "你要判斷的路徑")

例如:
L = os.listdir( "/root/123" )
print L

顯示 :
['test.txt', 'test.py','python']
#這裡面既有文件也有子目錄

九、創建子目錄
os.makedirs( path ) # path 是"要創建的子目錄"

例如:
os.makedirs("/root/123")

調用有可能失敗,可能的原因是:
(1) path 已存在時(不管是文件還是文件夾)
(2) 驅動器不存在
(3) 磁碟已滿
(4)磁碟是只讀的或沒有寫許可權

十、刪除子目錄
os.rmdir( path ) # path: "要刪除的子目錄"

產生異常的可能原因:
(1) path 不存在
(2) path 子目錄中有文件或下級子目錄
(3) 沒有操作許可權或只讀

十一、刪除文件
os.remove( filename ) # filename: "要刪除的文件名"

產生異常的可能原因:
(1) filename 不存在
(2) 對filename文件, 沒有操作許可權或只讀。

十二、文件改名
os.name( oldfileName, newFilename)

產生異常的原因:
(1) oldfilename 舊文件名不存在
(2) newFilename 新文件已經存在時,此時,您需要先刪除 newFilename 文件。

⑤ python os怎麼刪除一個父目錄

os.removedirs(path)


遞歸刪除目錄。

⑥ Python中os模塊提供的與目錄相關的函數有哪些呢

答案正確。以下是這些函數的具體說明:

os.getcwd():獲取當前工作目錄的路徑名。
os.listdir(path):列出指定目錄下的所有文件和子目錄(不包含 . 和 .. 目錄)。
os.mkdir(path[, mode]):創建一個新目錄,其中 path 參數是要創建的目錄路徑名,mode 參數是可選的,指定目錄許可權,默認為 0777。
os.makedirs(path1/path2…[, mode]):遞歸創建多層目錄結構,其中 path1/path2… 參數是要創建的目錄路徑名,在這個路徑下逐層創建目錄,並且可以遞歸創建多層帶握目錄,mode 參數是可選的,指定目錄許可權,默認為 0777。
os.rmdir(path):刪除指定的目錄,前提是這個目錄必須為空,否則無法刪除。
os.removedirs(path1/path2…):遞歸刪除指定的目錄及其中的所有空目錄,其中 path1/path2… 參數是要刪除的目錄路徑名,在遞歸刪除過程中,若某個目錄不為空,則不會被刪除。
os.chdir(path):改變當前工作目錄,其中 path 參數表示要切換的目錄路徑名。
os.walk(top[, topdown[, onerror]]):以目錄樹形式遍歷指定目錄下的所有文件和子目錄,並返回一個三元組 (dirpath, dirnames, filenames),其中 dirpath 表示當前目錄路徑,dirnames 是當前目錄下的所有子目錄名,filenames 是當前目錄下的所有非目錄文件名。當 topdown 參數為 True 時,表示先遍歷一級目錄,再判斷是否需要遞歸遍歷其它子目錄,默認值為 True;當 onerror 參數不為 None 時,表示如果在遍歷目錄樹時遇到錯誤是否拋出異常(否則該錯誤直接被忽略),onerror 參數需要傳入一個函數,接受三個參數,分別是出現錯誤的根目錄、錯誤對象 Exception 和 traceback 對象。
以上是 os 模塊中的蠢正慶一些常用目錄相關函數。需要注意的是,對於一些有進行文件和目錄操作的函數,一定要清棗注意操作的許可權和路徑的正確性,避免在操作時發生不必要的錯誤。

⑦ python刪除目錄下的空文件夾

import os

def del_emp_dir(path):
for (root, dirs, files) in os.walk(path):
for item in dirs:
dir = os.path.join(root, item)
try:
os.rmdir(dir) #os.rmdir() 方法用於刪除指定路徑的目錄。僅當這文件夾是空的才可以, 否則, 拋出OSError。
print(dir)
except Exception as e:
print('Exception',e)
if __name__ == '__main__':
dir = r'F:\test'
del_emp_dir(dir)

熱點內容
光遇源碼 發布:2025-07-18 01:36:52 瀏覽:609
一克拉演算法 發布:2025-07-18 01:36:16 瀏覽:881
sql的標准 發布:2025-07-18 01:31:19 瀏覽:418
za解壓怎麼用 發布:2025-07-18 01:15:43 瀏覽:39
勒索加密文件恢復 發布:2025-07-18 01:15:37 瀏覽:159
更換雲伺服器廠商需要遷移域名 發布:2025-07-18 01:14:54 瀏覽:906
android向上滑動 發布:2025-07-18 01:04:48 瀏覽:43
atom編譯器utf8 發布:2025-07-18 01:03:50 瀏覽:840
android對應ndk 發布:2025-07-18 00:53:46 瀏覽:218
sm4演算法使用 發布:2025-07-18 00:53:42 瀏覽:817