用python删除指定目录下带某个字符串的图片

前言:

        在文件处理中,有时我们需要批量删除指定文件夹中的特定类型文件。如果文件数量非常庞大,手动删除会非常麻烦,所有可以用 Python 编写一个简单而高效的脚本,自动执行重复性的任务,从而节省时间和精力,并减少误删的风险。

        刚好近期遇到了这个问题,就写个笔记方便之后回顾吧。(代码中涉及的一些函数放在了文末介绍)

举个例子:我想要删除下面文件夹中包含有'consep'这个字符串的图片(最后三张)

用python删除指定目录下带某个字符串的图片_第1张图片

 一、代码如下:
法一:
import os
path = "D:\Pytorch-UNet-master\data\imgs2-cell"  # 图片所在路径
dir = os.listdir(path)   
category = "consep"  # 要删除的那个字符串
for i in range(0,len(dir)):
    file_path = os.path.join(path,dir[i])    # 构造完整的文件路径,dir[i]是获取图片名
    if category in dir[i]:
            os.remove(file_path)
            print(f"Deleted:{file_path}")

如果想删除.jpg或者.png格式的图片,把category改成对应的.jpg或者.png就ok了。 

 法二:
import os
#自定义一个函数
def delete_image(directory,category):
    for root,dirs,files in os.walk(directory):
        for file in files:
            file_path = os.path.join(root,file)
            if category in file_path:
                os.remove(file_path)
                print(f"{file_path} has been deleted")

#调用
path = "D:\Pytorch-UNet-master\data\imgs2-cell"
category = "consep"
delete_image(path,category)

第二种方法是自定义一个函数,然后调用来实现删除指定的图片。

参数directory指图片所在路径。

二、函数介绍。
1.os.listdir() 函数

在上述法一的代码中,os.listdir(path) 是 Python 的 os 模块中的一个文件处理函数,它可以返回指定目录下的所有文件和文件夹的名称列表。

注意:os.listdir()函数只返回当前目录下的文件和文件夹名称,不包括子目录中的内容,也就是下图data目录下显示的这些会被列出,而目录data/imgs/里面有什么不会被列出(看下图)

如图:

用python删除指定目录下带某个字符串的图片_第2张图片

import os
path = 'D:\Pytorch-UNet-master\data' # 指定目录路径

file_list = os.listdir(path)
for file_name in file_list:
    print(file_name)


'''
输出的结果为:
            imgs
            imgs2-cell
            imgs2-cell1
            mask2-cell
            masks
            output
            output2
            output3
            Predict1-car
            Predict2
            Predict3-cell
            resize.py
            tran.py
'''
 2.os.path.join()函数

法一代码中,os.path.join()函数将当前目录的路径(path)和当前文件名(dir[i])组合成一个完整的文件路径。file_path = os.path.join(path,dir[i]),组合完之后,打印出来的file_path是文件夹imgs2-cell/下面所有图片的绝对路径了。

import os
path = "D:\Pytorch-UNet-master\data\imgs2-cell"  # 图片所在路径
dir = os.listdir(path)   
category = "consep"  
for i in range(0,len(dir)):
    file_path = os.path.join(path,dir[i]) 
    print(file_path)


'''如:D:\Pytorch-UNet-master\data\imgs2-cell\0.png
      .......
'''
3.os.walk()函数

os.walk() 是 Python 中的一个内置函数,用于遍历一个目录及其所有子目录,并为每个子目录返回一个三元组[ (root:当前目录列表),(dirs:子目录列表),(files文件列表)]。简单来说就是以此迭代,相当于一个树状结构。

如下:me下面只有两个.py文件,没有目录了,所有打印出来的dirs就为空

import os
path = "D:\Pytorch-UNet-master\me"
for root,dirs,files in os.walk(path):
    print('1:',root)
    print('2:',dirs)
    print('3:',files)


'''
print结果:
    1: D:\Pytorch-UNet-master\me
    2: []
    3: ['unet-parts2.py', '__init__.py']
'''

 结尾:到这里就结束啦,第一次写这些,如有不足指出多多包涵哈。~~

你可能感兴趣的:(python,笔记,开发语言)