python 递归删除文件、目录

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

猜你喜欢

转载自blog.csdn.net/helloxiaozhe/article/details/80678970