zoukankan      html  css  js  c++  java
  • python-os.rmdir与shutil.rmtree的区别和用法

    每次写脚本的时候,pycharm都会自动生成缓存文件__pycache__文件,在提交代码的时候还得挨个删除,于是自己写一小段代码自动循环删除此目录及下面的文件。

    思路:

    先将目录及其下的文件读取出来,然后删除目录下的文件,再清除空目录即可。

    第一步:

    import os

    利用os.walk(top, [,topdown][,onerror][,followlinks])遍历目录

    其中:

    top:指定要遍历内容的根目录

    topdown:可选参数,用于指定遍历顺序。True表示自上而下遍历(即先遍历根目录);若为False,则先遍历最后一级子目录。默认为True。

    返回值:返回值包含3个元素的元组的生成器。其中,dirpath表示当前遍历的路径,是一个字符串;dirnames表示当前目录下包含的子目录,是一个列表;filenames表示当前路径下包含的文件,是一个列表。

    第二步:

    os.remove:用来删除文件

    os.rmdir:用来删除目录,值的注意的是,若目录下有文件,即目录不为空,则删除会失败,抛出错误。

    利用for循环,先删除目录下的文件,然后再清空目录。这里需要注意,要从最后一级的子目录开始删除文件,防止文件没有删除干净,导致删除目录失败;

    代码如下:

    1 import os 
      tuples = os.walk(top=top, topdown=False) 2   for root, dirs, files in tuples: 3   if "__pycache__" in root: 4    for name in files: 5   os.remove(os.path.join(root, name)) 6    os.rmdir(os.path.join(root))

    方法二:经查阅,python有个模块更加强大,可以用一个命令删除目录及其下的文件,这个模块是shutil:

    代码如下:

    import os
    import shutil
    
    tuples = os.walk(top=top, topdown=False)
    for root, dirs, files in tuples:
        print(root, dirs, files)
        if "__pycache__" in root:
            shutil.rmtree(os.path.join(root))

    python 真强大,只有想不到的,没有它做不到的。

  • 相关阅读:
    大道至简第六章-从编程到工程
    Java动手动脑-接口继承
    随机数生成数组元素求和
    大道至简第五章-失败的过程也是过程
    课堂-字符串加密
    字符串加密
    课堂动手动脑-3及字符串加密
    java课堂回答
    读后感
    从编辑懂工程
  • 原文地址:https://www.cnblogs.com/fish-101/p/11721261.html
Copyright © 2011-2022 走看看