如何提取一个文件夹下特定格式的文件

今天在做数据标注的时候遇到一个问题,就是如何把我需要的jpg格式的数据从文件夹里提取出来,这里注意:我的文件夹里不止有jpg格式的数据,还有其他乱七八糟的格式数据。

除了上面的要求之外,我还需要对每个jpg格式的文件还像之前一样存放在对应的目录下,而不是弄成一锅粥。

下面给出Python代码:

说明:

1、path是你的数据集存放目录

2、target_path是你需要存放的位置

3、拓展:你可以修改代码中的Str的值来到达你想提取的格式,我这里只提取jpg格式

import os,sys
import shutil
import glob
"""
说明:本程序是拷贝jpg代码的代码,会拷贝给定目录中所有的jpg格式的文件到指定的target_path中
"""
path = r"D:/数据集/01-250"
# 需要保存到的路径
target_path = "D:/2/"
dir = []
for root, dirs, files in os.walk(path):
    # print(root) #当前目录路径
    # print(dirs) #当前路径下所有子目录
    # print(files) #当前路径下所有非目录子文件
    dir.append(root)
print(dir)
if os.path.exists(target_path):
    pass
else:
    os.makedirs(target_path)
for file_name in dir:
    # 图片目录
    image_file_list = []
    # image_file = os.path.join(file_name, '*.' + 'jpg')
    Files = os.listdir(file_name)
    for k in range(len(Files)):
        # 提取文件夹内所有文件的后缀
        Files[k] = os.path.splitext(Files[k])[1]
    Str = '.jpg'
    if Str in Files:
        image_file = os.path.join(file_name, '*.' + 'jpg')
        image_file_list.extend(glob.glob(image_file))
        print("发现在", file_name, "中有文件", "一共有jpg格式的图片", len(image_file_list), "张\n")
    #if os.path.exists(image_file):
        # 提取最后一个文件名
        last_file_name = file_name.split("/")[-1]
        # 创建新的文件夹
        new_file_name = os.path.join(target_path, last_file_name)
        if os.path.exists(new_file_name):
            continue
        else:
            os.makedirs(new_file_name)
        # 复制文件
        #print("%s中需要%s复制文件  \n"%(file_name, len(image_file_list)))
        def _progress(oringal, target, count, total_size):
            sys.stdout.write(
                '\r>> 正在拷贝%s中的文件到%s 已完成%.1f%%' % (oringal, target, float(count) / float(total_size) * 100.0))
            sys.stdout.flush()
        for i,image in enumerate(image_file_list):
            _progress(file_name, new_file_name, i, len(image_file_list))
            shutil.copy(image, new_file_name)
        print("\n")
    else:
        continue


 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值