zoukankan      html  css  js  c++  java
  • 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')
  • 相关阅读:
    隐马尔科夫模型(Hidden Markov Models) 系列之三
    隐马尔科夫模型(Hidden Markov Models) 系列之二
    隐马尔科夫模型(Hidden Markov Models) 系列之一
    详解大端模式和小端模式
    viewController详解
    手机产品设计禁忌
    直接拿来用!最火的iOS开源项目(三)
    直接拿来用!最火的iOS开源项目(二)
    <c:out>标签不能正确输出value中的值
    元素类型为 "configuration" 的内容必须匹配 "(properties?,settings?,typeAliases?,typeHandlers?
  • 原文地址:https://www.cnblogs.com/yekushi-Z/p/11464837.html
Copyright © 2011-2022 走看看