python-os.rmdir与shutil.rmtree的区别和用法

Posted 101欢欢鱼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 真强大,只有想不到的,没有它做不到的。

以上是关于python-os.rmdir与shutil.rmtree的区别和用法的主要内容,如果未能解决你的问题,请参考以下文章

python网络编程基础(线程与进程并行与并发同步与异步)

=与==&与&&| 与 || 的区别

与 0 进行比较与与某个值进行比较是不是更快?

三.工具与市场-债券与债务股票与公司

RESTfulREST 与 RESTful 理解与实践

RESTfulREST 与 RESTful 理解与实践