获取子文件夹指定位置的文件 python脚本

文章描述了使用Python脚本如何在主目录下指定的子目录中,按顺序获取并移动第200至279张jpg图片和第200至300个txt文件到目标文件夹,同时设置了数量限制。

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

代码结构:主目录下有若干子目录,子目录中均包含若干图片或者txt文件

分别对jpg图片和txt文件写了代码:

主目录路径和目标文件夹请根据个人情况完成

jpg图片:(获取第200张到279张)

import os
import shutil

# 指定包含子文件夹的文件夹路径
folder_path = "E:/datasetbf/mydata/valdata"

# 创建一个单独的目标文件夹
target_folder = "E:/datasetbf/mydata/uavchange/images/val2"
if not os.path.exists(target_folder):
    os.makedirs(target_folder)
i = 0
# 循环遍历每个子文件夹
for subdir, _, files in os.walk(folder_path):
    i = i+1
    print(i)
    # 对文件进行排序
    files.sort()
    # 计数器,用于限制每个子文件夹中的图片数量
    count = 0
    # 循环遍历每个文件
    for file in files:
        # 增加计数器
        count += 1
        # 检查文件扩展名是否为图片(可以根据需要修改扩展名)
        if file.endswith(".jpg") :
            if count >200 and count <= 279:
                # 构建原始文件的完整路径
                file_path = os.path.join(subdir, file)
                # 将文件移动到目标文件夹中
                shutil.move(file_path, target_folder)

        # 如果计数器超过200,则退出循环
        if count > 300:
            break

# 如果需要,可以在此处添加其他逻辑来处理超过200张的情况

txt文件:(获取第200个到第300个)

import os
import shutil

# 指定包含子文件夹的文件夹路径
folder_path = "E:/datasetbf/mydata/valdata"

# 创建一个单独的目标文件夹
target_folder = "E:/datasetbf/mydata/uavchange/labels/val2"
if not os.path.exists(target_folder):
    os.makedirs(target_folder)

i = 0
# 循环遍历每个子文件夹
for subdir, _, _ in os.walk(folder_path):
    # 计数器,用于限制每个子文件夹中的 txt 文件数量
    count = 0
    i = i + 1
    print(i)
    # 对txt文件进行遍历
    txt_folder_path = os.path.join(subdir, "txt")
    if os.path.exists(txt_folder_path):
        txt_files = os.listdir(txt_folder_path)
        txt_files.sort()  # 排序txt文件
        for txt_file in txt_files:
            if txt_file.endswith(".txt"):
                # 构建txt文件的完整路径
                count += 1
                txt_file_path = os.path.join(txt_folder_path, txt_file)
                if count >= 201 and count <=300:
                    # 将txt文件复制到目标文件夹中
                    shutil.copy(txt_file_path, target_folder)
                    # 增加计数器

                    # 如果计数器超过200,则退出循环
                if count > 300:
                    break

# 如果需要,可以在此处添加其他逻辑来处理超过200个文件的情况

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值