递归删除文件或目录:
递归,os.walk
删除目录,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()实例:
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()实例:
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中。
代码解释:
1. 声明是 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)