Python实现文件夹中的每个文件存放到单独文件夹

通过Python实现文件单独存放

在一个文件夹中有许多的单独文件,如果我们需要将其单独放在文件自己的文件夹中,可以通过这种方式。
比如下图这样的结果,将“Pictures”文件夹中的每个文件夹里的图片,单独放到“Results”文件中。
在这里插入图片描述

实现

一共有两种迭代,一种是文件夹中的文件,另一种是文件夹中的文件夹中的文件(此为一类)。

文件夹中还有文件夹的情况

目录结构如图所示。
在这里插入图片描述
我将代码放到了文件的同级目录,具体可以根据自己的需要修改。

# 文件夹下的文件夹中的文件。
import os,shutil

#获取当前执行文件的目录。
currentPath=os.getcwd()
#目标文件所在的目录。
src_path=currentPath + '/Pictures/'

while True:
    fold_list=os.listdir(src_path)	# 得到目标文件夹的所有子目录。
    if len(fold_list)>0:
        for fold in fold_list:		# 迭代所有的子目录,fold就是子目录的名字。
            file_list = os.listdir(src_path + fold)	# 判断子目录中是否有文件。
            if len(file_list)>0:
                for file in file_list:	#迭代所有文件
                    # 拆解文件和后缀,保证新建的文件夹不包含后缀。
                    name, suffix = os.path.splitext(file)	
                    # 目标目录,可以根据自己的需要修改。
                    target_path = currentPath + '/Results/' + fold + '/' + name + '/'
                    # 判断是否有了当前文件。
                    newFolder = os.path.exists(target_path)
                    if (not newFolder):
                        os.makedirs(target_path)
                    # 复制文件
                    shutil.copy(src_path+ '/' + fold + '/' + file, target_path + file)

            print(fold, " Has Done!")

        break

文件夹中的文件

这一步只需要将代码中的子目录文件夹迭代去掉就好了。
效果如下图所示。
在这里插入图片描述

import os,shutil

currentPath=os.getcwd()
src_path=currentPath + '/NoChilds/'

while True:
    file_list = os.listdir(src_path)
    if len(file_list) > 0:
        for file in file_list:
            # New Floder.
            name, suffix = os.path.splitext(file)
            target_path = currentPath + '/Results/' + 'NoChilds/'+ name + '/'
            newFolder = os.path.exists(target_path)
            if (not newFolder):
                os.makedirs(target_path)
            shutil.copy(src_path + '/' + file, target_path + file)

    print("This Fold Has Done!")
    break

希望对大家有所帮助,互相学习。

为了使用Python文件夹中的视频逐帧分割并分别存放在各自的子文件夹中,我们可以使用`ffmpeg`库。这里提供一个基础示例,首先安装`ffmpeg`(如果不是已经安装,可以使用`pip install ffmpeg-python`),然后使用下面的代码: ```python import os import subprocess import shutil # 定义源视频文件夹、目标帧文件夹以及临时帧文件夹 source_folder = "source_videos" destination_folder = "frame_folders" temp_folder = "temp_frames" # 确保目标文件夹存在,如果不存在则创建 if not os.path.exists(destination_folder): os.makedirs(destination_folder) for video_file in os.listdir(source_folder): if video_file.endswith(("mp4", "avi")): # 可以根据需要扩展支持的视频格式 video_path = os.path.join(source_folder, video_file) output_dir = os.path.join(destination_folder, video_file.split('.')[0]) # 输出子文件夹名与原视频名一致 if not os.path.exists(output_dir): # 如果子文件夹不存在,则创建 os.makedirs(output_dir) temp_output_dir = os.path.join(temp_folder, video_file.split('.')[0]) # 临时存储帧的目录 if not os.path.exists(temp_output_dir): os.makedirs(temp_output_dir) # 使用ffmpeg命令行工具分割视频为单帧,并临时保存到temp_folder command = f"ffmpeg -i '{video_path}' -vf 'select=not(mod(n\\,{1}))' {temp_output_dir}/%06d.jpg" subprocess.call(command, shell=True) # 调用命令 # 将帧从临时文件夹移动到目标文件夹 for filename in os.listdir(temp_output_dir): src = os.path.join(temp_output_dir, filename) dst = os.path.join(output_dir, filename) shutil.move(src, dst) # 清理临时帧文件夹 shutil.rmtree(temp_output_dir) print(f"所有视频已成功拆分为帧并保存至各自子文件夹.")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值