【实验常用】Python在指定路径下批量创建及删除文件夹

前言

  博主在做深度学习时,尤其是计算机视觉方向,为了保存网络训练/测试过程中的一些输出结果,需要批量创建和删除一些文件夹,因此撰写了该博文。

一、在指定路径下创建1个文件夹

  如果你只是想在某个指定路径下创建一个指定名称的文件夹,那么直接复制下述代码,并将下述代码中的路径及文件夹名称修改为你自己的信息即可。

import os

# 前者为路径,后者为待创建的文件夹名称
dir = os.path.join(r'D:\yandandan2021\code','epoch1') 

# 判断上述路径中是否已经存在目标文件夹
isExists = os.path.exists(dir) 

# 如果不存在则创建,否则不做任何操作
if not isExists: 
    os.mkdir(dir)

  上述代码的具体效果可参考下图:

  在这里插入图片描述

二、在指定路径下创建N个文件夹

  当然,既然都打算用Python来自动创建文件夹,肯定是要创建不止一个文件夹。其实,批量创建N个文件夹和创建一个文件夹的道理是一样的,只需要加一个循环,并在创建文件夹时为每个文件夹名称加上一个序号信息即可。具体代码如下:

import os

def create_dirs():
    for i in range(1,6): # 这里需要注意,i取不到6,因为range()是前闭后开的,即i的取值范围为1-5。
        
        dir = os.path.join(r'D:\yandandan2021\code','epoch_' + str(i).zfill(2)) 
        # 前者为路径,后者为待创建文件夹的名称。注意,批量创建文件夹时不能有重复名称的,因此可以对文件夹加上序号信息。

        isExists = os.path.exists(dir) 
        if not isExists: 
            os.mkdir(dir)

# 调用上述的自定义函数来批量创建文件夹
create_dirs()

  上述代码的具体效果可参考下图:

  在这里插入图片描述

三、在N个文件夹下分别创建M个子文件夹

  下述代码展示了首先在指定路径下,创建5个epoch文件夹,然后再分别在5个epoch文件夹中创建10个batch文件夹的过程。

import os

def create_compound_dirs():
    for i in range(1,6): # 表示创建5个epoch文件夹
        dir = os.path.join(r'D:\yandandan2021\code', 'epoch_' + str(i).zfill(2))
        isExists = os.path.exists(dir)
        if not isExists:
            os.mkdir(dir)

        for j in range(1,11): # 表示分别在5个epoch文件夹下再创建10个batch文件夹
            file = os.path.join(dir,'batch_'+str(j).zfill(2))
            isFileExists = os.path.exists(file)
            if not isFileExists:
                os.mkdir(file)

create_compound_dirs()

  具体效果如下:

扫描二维码关注公众号,回复: 14643958 查看本文章

  在这里插入图片描述

  在这里插入图片描述

四、批量删除指定文件夹中的所有文件及文件夹

  下述代码实现了删除所有batch文件夹下的子文件和子文件夹

import os
import shutil


# 删除指定文件夹下的所有文件及文件夹
def del_fils_and_dirs():
    for i in range(1,6):
        root = os.path.join(r'D:\yandandan2021\code', 'epoch_' + str(i).zfill(2))

        for j in range(1,11):
            dir = os.path.join(root,'batch_'+str(j).zfill(2))

            # 代码从这里才开始删除
            # 即删除dir路径下所有文件及文件夹
            # 注意!文件和文件夹都会被删除掉!
            for file in os.listdir(dir):
                file_path = os.path.join(dir, file)
                if os.path.isfile(file_path):
                    os.remove(file_path)
                elif os.path.isdir(file_path):
                    shutil.rmtree(file_path)

del_fils_and_dirs()

  以epoch_01文件夹下的batch_01文件夹为例,删除下,该batch文件夹下具有如下文件和文件夹:

  在这里插入图片描述

  运行如上代码后,该batch文件夹下的所有文件及文件夹都会被删除掉。

  在这里插入图片描述
  本博客至此就结束了。如果本博客对你有所帮助的话,麻烦点赞、收藏,以便下次更快地找到!

猜你喜欢

转载自blog.csdn.net/qq_40968179/article/details/129639368