python學習筆記7-Python目錄創建,刪除和遍歷

目錄和文件的操作,需要引入 os 模塊:

 import os

一、創建目錄

目錄 directory ,簡寫 dir ,簡單來說就是文件夾。

  • 使用 os.mkdir( ) 函數創建目錄(創建一級目錄)。

  • 使用 os.makedirs()函數創建多級目錄(目錄下面還有目錄)。

原型如下所示:

os.mkdir( path )     # mk 就是 make
os.makedirs( path )  # 居然不是 mkdirs,我覺得這個名字太不科學了,增加了記憶數量。

參數path 爲要創建目錄(文件夾)的路徑。

os.mkdir('d:\hello')   # D盤下創建hello的目錄
os.mkdir("hello")      # 跟python文件同級的目錄

os.makedirs('d:\\books\\book')   # 字符串中的 \ 具有轉義的功能,所以表示普通的 \ ,需要 \\
os.makedirs( r"d:\books\book" )  # 字符串前面加個 r,就不會轉義了。
os.makedirs(  r"books\book" )    # 跟 python 文件同級的文件夾

但是,如果文件夾已經存在,再創建相同目錄,就會報錯。

所以,一般在創建目錄之前,要做一個判斷,看路徑是否存在(多級目錄判斷方式一樣)。

isExist = os.path.exists( r"ss\abc" )  # 文件夾存在與否
if not isExist:  # 如果不存在文件夾
    os.makedirs(r"ss\abc")  # 創建目錄

os.path.exists( x ) 可以判斷文件或者文件夾是否存在。是,True;不是,False。

二、刪除目錄

刪除 remove,簡寫 rm。

  • os.rmdir( ) 刪除目錄。

  • os.removedirs( ) 函數刪除多級目錄

和創建目錄函數對比,發現多級目錄 make 和 remove 寫的是完整單詞。

原型如下:

os.rmdir( path )       # 刪除單級目錄
os.removedirs( path )  # 刪除多級目錄

參數path 爲要刪除的目錄(文件夾)路徑。

os.rmdir('d:\ss')     # 刪除 d 盤下的 ss 目錄
os.rmdir('ss')        # 刪除 python 文件同級的 ss 目錄

os.removedirs('d:\\ss\\abd')  #  刪除多級目錄
os.removedirs( r"ss\abd")    

注意:要刪除的目錄必須是空目錄!所以,在刪除目錄之前,一定要清空目錄裏的內容。有一個文件或者文件夾都不行。

三、刪除文件

使用 os.remove( ) 函數刪除一個文件。不能是多個文件。

os.remove( r"ss\abc\test.txt")      #  刪除 ss\abc 目錄下的 test.txt 文件

四、遍歷目錄

使用 os.walk( ) 函數遍歷目錄。

其原型如下:

os.walk( path )

其參數path 爲要遍歷的目錄。

返回一個對象,它的每個部分都是一個三元組 ( '目錄x',[目錄x下的目錄list],目錄x下面的文件 )

mulu =  os.walk( "ss" )    #  遍歷跟 python 文件同級的 ss 文件夾。其結構如下圖。
for item in mulu:
    print( item )

('ss', ['abc'], [])
('ss\\abc', ['11', '22', '33'], ['abc1.txt', 'abc2.txt', 'abc3.txt'])
('ss\\abc\\11', [], ['py1.txt', 'py2.txt', 'py3.txt'])
('ss\\abc\\22', [], [])
('ss\\abc\\33', [], [])

輸出的目錄結構,從上到下,一層一層的輸出,直到底層。

五、判斷是否爲目錄

os.path.isdir( path ) 函數判斷某一路徑是否爲目錄。是,True;不是,False。

六、判斷是否爲目錄

os.path.isfile( path ) 函數判斷某一路徑是否爲文件。是,True;不是,False。

小案例1:刪除目錄下所有的文件

刪除目錄下所有的文件,含子目錄的文件

mulu =  os.walk( "ss" )
for item in mulu:
    for file in item[2]:
        print( item[0]+"\\"+file )
        os.remove( item[0]+"\\"+file )

小案例2:刪除某個目錄

刪除某個目錄,該目錄不爲空,有子文件夾和文件。如圖所示:

def delFolder(targetDir):
    fList = os.walk(targetDir)
    dirs = []    # 文件夾目錄 lsit
    for item in fList :
        print(item)
        for  file in item[2]:  # 遍歷元素2 文件list
            os.remove(item[0]+"\\"+file)  # 刪除文件
        dirs.append(item[0])  # 從上到下依次把文件夾目錄放進list中
        
    dirs = dirs[::-1]   # 逆向文件夾路徑,從下到上
    for itemDir in dirs: # 從下到上,依次刪除目錄
        os.rmdir(itemDir)

delFolder("test")

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章