python 递归删除文件、目录
本文讲述了python实现删除文件与目录的方法。具体实现方法如下:
一、删除文件
os.remove(path)
删除文件 path. 如果path是一个目录, 抛出 OSError错误。如果要删除目录,请使用rmdir().
remove() 同 unlink() 的功能是一样的
my_file = 'foo/bar/baz/test.txt'
if os.path.exists(my_file):
print "存在"
# my_file = 'foo/bar/baz/test.txt'
# 删除文件,可使用以下两种方法。
# 删除文件 path. 如果path是一个目录, 抛出 OSError错误。如果要删除目录,请使用rmdir().
os.remove(my_file) # OSError: [Errno 1] Operation not permitted: 'foo/bar/baz'
os.unlink(my_file) # OSError: [Errno 1] Operation not permitted: 'foo/bar/baz'
else:
print 'no such file:%s'%my_file
二、递归删除目录和文件
os.removedirs(path)
递归地删除目录。类似于rmdir(), 如果子目录被成功删除, removedirs() 将会删除父目录;但子目录没有成功删除,将抛出错误。
举个例子, os.removedirs(“foo/bar/baz”) 将首先删除 “foo/bar/ba”目录,然后再删除foo/bar 和 foo, 如果他们是空的话
如果子目录不能成功删除,将 抛出 OSError异常
os.rmdir(path)
删除目录 path,要求path必须是个空目录,否则抛出OSError错误
递归删除目录和文件(类似DOS命令DeleteTree):
复制代码 代码如下:
top='foo/bar/baz'
import os
for root, dirs, files in os.walk(top, topdown=False):
print "root: ", root, " dirs: ", dirs, " files: ",files
'''
root: foo/bar/baz/empty/test dirs: [] files: []
root: foo/bar/baz/empty dirs: ['test'] files: []
root: foo/bar/baz dirs: ['empty'] files: ['test_bak.txt', 'test.txt']
'''
continue
for name in files:
os.remove(os.path.join(root, name))
for name in dirs:
os.rmdir(os.path.join(root, name))
或者
print "***************"
top='foo/bar/baz/empty/test'
# 删除test这个目录及其里面的子目录和文件
import shutil
shutil.rmtree(path=top)
print "done"
参考:https://blog.csdn.net/muwinter/article/details/77196261