前言:
在文件处理中,有时我们需要批量删除指定文件夹中的特定类型文件。如果文件数量非常庞大,手动删除会非常麻烦,所有可以用 Python 编写一个简单而高效的脚本,自动执行重复性的任务,从而节省时间和精力,并减少误删的风险。
刚好近期遇到了这个问题,就写个笔记方便之后回顾吧。(代码中涉及的一些函数放在了文末介绍)
举个例子:我想要删除下面文件夹中包含有'consep'这个字符串的图片(最后三张)
一、代码如下:
法一:
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/里面有什么不会被列出(看下图)
如图:
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']
'''
结尾:到这里就结束啦,第一次写这些,如有不足指出多多包涵哈。~~