遞歸刪除文件或目錄:python
遞歸,os.walksvn
刪除目錄,shutil.rmtree函數
1 # -*- coding: UTF-8 -*- 2 import os.path,sys,shutil 3 4 path = 'H:/test' 5 6 7 for root ,dirs ,files in os.walk(path): 8 print root,dirs,files 9 for name in dirs: 10 if name == 'svn': 11 print name 12 shutil.rmtree(os.path.join(root,name)) 13 for name in files: 14 if name=='test.txt': 15 os.remove(os.path.join(root,name))
python之os.walk()與os.path.walk()編碼
os.walk()
函數聲明:walk(top,topdown=True,onerror=None)
1>參數top表示須要遍歷的目錄樹的路徑
2>參數topdown的默認值是"True",表示首先返回目錄樹下的文件,而後在遍歷目錄樹的子目錄.Topdown的值爲"False"時,則表示先遍歷目錄樹的子目錄,
返回子目錄下的文件,最後返回根目錄下的文件
3>參數onerror的默認值是"None",表示忽略文件遍歷時產生的錯誤.若是不爲空,則提供一個自定義函數提示錯誤信息後繼續遍歷或拋出異常停止遍歷
4>該函數返回一個元組,該元組有3個元素,這3個元素分別表示每次遍歷的路徑名,目錄列表和文件列表
os,walk()實例:spa
1 import os 2 def VisitDir(path): 3 for root,dirs,files in os.walk(path): 4 for filespath in files: 5 print os.path.join(root,filespath) 6 if __name__=="__main__": 7 path="/root" 8 VisitDir(path)
os.path.walk()
函數聲明:walk(top,func,arg)
1>參數top表示須要遍歷的目錄樹的路徑
2>參數func表示回調函數,對遍歷路徑進行處理.所謂回調函數,是做爲某個函數的參數使用,當某個時間觸發時,程序將調用定義好的回調函數處理某個任務.
回調函數必須提供3個參數:第1個參數爲walk()的參數tag,第2個參數表示目錄列表,第3個參數表示文件列表
3>參數arg是傳遞給回調參數func的元組.回調函數的一個參數必須是arg,爲回調函數提供處理參數.參數arg能夠爲空
os.path.walk()實例:code
1 import os,os.path 2 def VisitDir(arg,dirname,names): 3 for filespath in name: 4 print os.path.join(dirname,filespath) 5 if __name__=="__main__": 6 path="/root" 7 os.path.walk(path,VisitDir,())
os.path.walk()與os.walk()產生的文件名列表並不相同.os.path.walk()產生目錄樹下的目錄路徑和文件路徑,而os.walk()只產生文件路徑 以下面的例程: 對象
1 # -*- coding: utf-8 -*- 2 import os 3 for root, dirs, files in os.walk('/media/cdrom0'): 4 open('mycd.cdc', 'a').write("%s %s %s" % (root,dirs,files))
完成的功能是/media/cdrom0下的目錄文件寫入到mycd.cdc中。blog
代碼解釋:遞歸
1. 聲明是 utf-8 編碼文本;utf-8
2. 引入了 os 模塊;
3. 使用os.walk() 掃描光盤,並返回三個對象;
4. 使用open()打開mycd.cdc 文件對象,並聲明成追加模式,逐行記錄以上三個對象。
使用os.path.join
1 path='f:/testdata/01' 2 3 for root, dirs, files in os.walk(path): 4 for name in dirs: 5 print os.path.join(root,name) 6 for file in files: 7 print os.path.join(root,name,file)