我在做目标检测项目的时候,对之前数据集删去了一些不清晰的图片,但对应的“.txt“文件没有删除,便想找出名称一样后缀为“.txt“的文件。

该博客主要介绍了如何使用Python进行文件操作,将指定目录下的.txt文件与另一目录下的.jpg文件进行匹配,当文件名相同时,将.jpg文件移动到预设的目标目录下。此过程涉及到os、glob和shutil库的使用,实现了文件的查找、比较和迁移。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# 日志
# 作者:CHEN ZHUO
# time:2022/7/24

import os
import glob
#img文件库
from PIL import Image
#txt文件用的库
#shutil库,它作为os模块的补充,提供了复制、移动、删除、压缩、解压等操作
import shutil


#指定找到文件后,另存为的文件夹路径
outDir = os.path.abspath('D:\\Deep_learn\\标注\\3')

#指定第一个文件夹的位置
txtDir1 = os.path.abspath('D:\\Deep_learn\\标注\\1')

#定义要处理的第一个文件夹变量
txt1 = [] #image1指文件夹里的文件,包括文件后缀格式;
txtname1 = [] #imgname1指里面的文件名称,不包括文件后缀格式

#通过glob.glob来获取第一个文件夹下,所有'.txt'文件
#os.path.join两个路径连接起来,glob.glob()路径下所有txt文件形成列表
txtList1 = glob.glob(os.path.join(txtDir1, '*.txt'))

#遍历所有文件,获取文件名称(包括后缀)
for item in txtList1:
    txt1.append(os.path.basename(item))

#遍历文件名称,去除后缀,只保留名称
for item in txt1:
    (temp1, temp2) = os.path.splitext(item)
    txtname1.append(temp1)

#对于第二个文件夹路径,做同样的操作
imageDir2 = os.path.abspath('D:\\Deep_learn\\标注\\2')
image2 = []
imgname2 = []
imageList2 = glob.glob(os.path.join(imageDir2, '*.jpg'))

for item in imageList2:
    image2.append(os.path.basename(item))

for item in image2:
    (temp1, temp2) = os.path.splitext(item)
    imgname2.append(temp1)

#通过遍历,获取第一个文件夹下,文件名称(不包括后缀)与第二个文件夹相同的文件,并另存在outDir文件夹下。文件名称与第一个文件夹里的文件相同,后缀格式亦保持不变。
for item2 in imgname2:
    for item1 in txtname1:
        if item1 == item2:
            #相同文件的路径
            dir = txtList1[txtname1.index(item1)]#index找出对应列表的第几个
            #dir = imageList2[imgname2.index(item1)]

            #图片的另一种处理方法
            #对应相同文件转移image文件
            # img = Image.open(dir)
            # name = os.path.basename(dir)
            # img.save(os.path.join(outDir, name))

            #对应相同文件夹转移txt文件
            if not os.path.exists(dir):#判断文件路径是否存在
                os.makedirs(dir)
            shutil.copy(dir,outDir)
            #shutil.move('原来文件路径', '想转移的路径')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞天SLAMER

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值