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 真强大,只有想不到的,没有它做不到的。

posted on 2019-10-22 17:45  101欢欢鱼  阅读(3257)  评论(0编辑  收藏  举报

导航