一、os.walk()
函數(shù)聲明:os.walk(top,topdown=True,onerror=None)
(1)參數(shù)top表示需要遍歷的頂級(jí)目錄的路徑嗜憔。
(2)參數(shù)topdown的默認(rèn)值是“True”表示首先返回頂級(jí)目錄下的文件秃励,然后再遍歷子目錄中的文件。當(dāng)topdown的值為"False"時(shí)吉捶,表示先遍歷子目錄中的文件夺鲜,然后再返回頂級(jí)目錄下的文件。
(3)參數(shù)onerror默認(rèn)值為"None"帚稠,表示忽略文件遍歷時(shí)的錯(cuò)誤谣旁。如果不為空,則提供一個(gè)自定義函數(shù)提示錯(cuò)誤信息后繼續(xù)遍歷或拋出異常中止遍歷滋早。
返回值:函數(shù)返回一個(gè)元組榄审,含有三個(gè)元素。這三個(gè)元素分別是:每次遍歷的路徑名杆麸、路徑下子目錄列表搁进、目錄下文件列表。
os.walk使用實(shí)例:刪除某個(gè)文件夾(當(dāng)然可以通過(guò)os.listdir的遞歸調(diào)用刪除)
import os
def Remove_dir(top_dir):
if os.path.exists(top_dir)==False:
print ('not exists')
return
if os.path.isdir(top_dir)==False:
print ('not a dir')
return
for dir_path,subpaths,files in os.walk(top_dir,False):
for file in files:
file_path=os.path.join(dir_path,file)
print ('delete file:%s")' %file_path
os.remove(file_path)
print ('delete dir:%s")'%dir_path
os.rmdir(dir_path)
Remove_dir(r"C:\Users\Administrator\Desktop\shili")
二昔头、os.path.walk
函數(shù)聲明:os.path.walk(top,func,arg)
(1)參數(shù)top表示需要遍歷的目錄路徑
(2)參數(shù)func表示回調(diào)函數(shù)饼问,即對(duì)遍歷路徑進(jìn)行處理的函數(shù)。所謂回調(diào)函數(shù)揭斧,是作為某個(gè)函數(shù)的參數(shù)使用莱革,當(dāng)某個(gè)時(shí)間觸發(fā)時(shí),程序?qū)⒄{(diào)用定義好的回調(diào)函數(shù)處理某個(gè)任務(wù)讹开。注意:walk的回調(diào)函數(shù)必須提供三個(gè)參數(shù):第1個(gè)參數(shù)為os.path.walk的參數(shù)arg盅视,第2個(gè)參數(shù)表示目錄dirname,第3個(gè)參數(shù)表示文件列表names旦万。
注意:os.path.walk的回調(diào)函數(shù)中的文件列表不和os.walk()那樣將子目錄和文件分開(kāi)闹击,而是混為了一攤,需要在回調(diào)函數(shù)中判斷是文件還是子目錄成艘。
(3)參數(shù)arg是傳遞給回調(diào)函數(shù)的元組赏半,為回調(diào)函數(shù)提供處理參數(shù)贺归,arg可以為空《象铮回調(diào)函數(shù)的第1個(gè)參數(shù)就是用來(lái)接收這個(gè)傳入的元組的拂酣。
過(guò)程:以top 為根的目錄樹(shù)中的每一個(gè)目錄 (包含 top 自身,如果它是一個(gè)目錄)仲义,以參數(shù) (arg, dirname, names)調(diào)用回調(diào)函數(shù) funct踱葛。參數(shù) dirname 指定訪問(wèn)的目錄,參數(shù) names 列出在目錄中的文件(從 os.listdir(dirname)中得到)光坝∈蹋回調(diào)函數(shù)可以修改 names 改變 dirname 下面訪問(wèn)的目錄的設(shè)置,例如盯另,避免訪問(wèn)樹(shù)的某一部分性含。(由 names 關(guān)連的對(duì)象必須在合適的位置被修改,使用 del 或 slice 指派鸳惯。) 注意:符號(hào)連接到目錄不被作為一個(gè)子目錄處理商蕴,并且因此 walk()將不訪問(wèn)它們。訪問(wèn)連接的目錄你必須以os.path.islink(file) 和 os.path.isdir(file)標(biāo)識(shí)它們芝发,并且必須調(diào)用walk() 绪商。
os.path.walk使用實(shí)例:遍歷文件夾下所有文件(os.path.walk()不能用于刪除文件夾(可能是我沒(méi)想到),因?yàn)閛s.path.walk()先遍歷頂級(jí)目錄辅鲸,再遍歷子目錄中的文件)格郁。
import os
def find_file(arg,dirname,files):
for file in files:
file_path=os.path.join(dirname,file)
if os.path.isfile(file_path):
print "find file:%s" %file_path
os.path.walk(r"C:\Users\Administrator\Desktop\4",find_file,())