2019python面试题-用python删除一个文件,删除一个非空目录

删除一个文件

os.remove()
方法用于删除指定路径的文件。如果指定的路径是一个目录,将抛出OSError。
import os

# 删除一个文件
my_file = 'D:/MyDocument/sc/ee.txt'
if os.path.exists(my_file):
    # 若存在,则删除
    os.remove(my_file)
    print('删除%s成功' %my_file)
else:
    print('no such file:%s' % my_file)

os.unlink() 方法用于删除文件,如果文件是一个目录则返回一个错误。

import os

# 删除一个文件
my_file = 'D:/MyDocument/sc/ee.txt'
if os.path.exists(my_file):
    # 若存在,则删除
    os.unlink(my_file)
    print('删除%s成功' %my_file)
else:
    print('no such file:%s' % my_file)


删除目录
os.rmdir() 方法用于删除指定路径的目录。仅当这文件夹是空的才可以, 否则, 抛出OSError。
import os

# 列出目录
print ("目录为: %s" %os.listdir(os.getcwd()))

# 删除目录
os.rmdir('ee')

# 列出删除后的目录
print ("移除后目录为 %s :" %os.listdir(os.getcwd()))

运行结果:
目录为: ['ee', 'fun.py']
移除后目录为 ['fun.py'] 
>>> 

os.removedirs() 方法用于递归删除目录。
像rmdir(), 如果子文件夹成功删除, removedirs()才尝试它们的父文件夹,直到抛出一个error(它基本上被忽略,因为它一般意味着你文件夹不为空)。
import os

# 列出目录
print ("目录为: %s" %os.listdir(os.getcwd()))

# 删除目录
os.removedirs('ee/ff/')

# 列出删除后的目录
print ("移除后目录为 %s :" %os.listdir(os.getcwd()))

运行结果:
目录为: ['ee', 'fun.py']
移除后目录为 ['fun.py']
os.walk() 方法用于通过在目录树中游走输出在目录中的文件名,向上或者向下。
os.walk() 方法是一个简单易用的文件、目录遍历器,可以帮助我们高效的处理文件、目录方面的事情。

语法 walk()方法语法格式如下: os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]]) 参数: top -- 是你所要遍历的目录的地址, 返回的是一个三元组(root,dirs,files)。 1、root 所指的是当前正在遍历的这个文件夹的本身的地址 2、dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录) 3、files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录) topdown --可选,为 True,则优先遍历 top 目录,否则优先遍历 top 的子目录(默认为开启)。

      如果 topdown 参数为 True,walk 会遍历top文件夹,与top 文件夹中每一个子目录。 onerror -- 可选,需要一个 callable 对象,当 walk 需要异常时,会调用。 followlinks -- 可选,如果为 True,则会遍历目录下的快捷方式(linux 下是软连接 symbolic link )实际所指的目录(默认关闭),
         如果为 False,则优先遍历 top 的子目录。

import os

for root, dirs, files in os.walk('D:MyDocumentscee', topdown=False):
    for name in files:
        print(os.path.join(root, name))
        os.remove(os.path.join(root, name))
    for name in dirs:
        print(os.path.join(root, name))
        os.rmdir(os.path.join(root, name))

运行结果:
D:MyDocumentsceeff.txt
D:MyDocumentsceeff
>>> 

import shutil

shutil通常是最后一个目录不为空,或者是权限不对,或者是你当前运行的目录就在那个目录,总之被占用,被锁,没有权限,不为空都删除不了。
rmtree(path, ignore_errors=False, onerror=None): 移除文档树,将文件夹目录删除

ignore_errors:是否忽略错误,默认False
onerror:定义错误处理函数,需传递一个可执行的处理函数,该处理函数接收三个参数:函数、路径和excinfo
>>> import shutil
>>> shutil.rmtree('D:MyDocumentscee')
原文地址:https://www.cnblogs.com/yekushi-Z/p/11464837.html