Python实现文件夹文件批量拆分与复制的方法

慢慢来
慢慢来
发布时间:2026-10-14 | 3人浏览过
原创

本文介绍如何使用Python的os和shutil库,将指定文件夹内的所有文件按每200个一组进行拆分,并自动复制到新的子文件夹中。通过遍历文件列表并判断数量阈值,程序能动态创建目标目录并完成文件复制,适用于需要整理大量文件的场景。

前言与背景

0 前言

大约三个月前,有人请求协助编写一段代码,主要功能是将一个文件夹内的所有文件拆分成每200个文件存放于一个独立文件夹中,任务看似简单。

经过分析,该需求实现难度不高,耗时约半小时完成编码,代码量较少,现将具体代码逻辑与实现思路分享如下。

运行环境配置

1 环境说明

运行环境为Windows 10系统,使用Python3解释器,开发工具为Pycharm。

需安装shutil第三方库,可通过执行pip install shutil命令直接安装。

代码实现逻辑

2 代码

首先导入必要的库,其中os模块用于路径切换及文件夹创建操作。

shutil模块则负责执行文件的复制与粘贴操作。


import os
from shutil import copy

变量i用于统计已处理的文件数量,当i达到200的倍数时,变量k递增1;变量k用于记录新建文件夹的序号,以便动态创建文件夹。

save_dir变量定义了复制后文件存放的根路径。


# i 用来计算文件数量,k 用来计算新建文件夹的数量
i = 0
k = 0

# 想保存到的根路径
save_dir = r'F:\666'
# 如果目录不存在,则创建
if not os.path.isdir(save_dir):
  os.makedirs(save_dir)

dir_name变量指定新文件夹的前缀名称;file_path变量指定源文件夹的路径,即包含待拆分文件的目录。

os.listdir(file_path)用于获取指定路径下的文件或文件夹列表,该函数在Unix和Windows系统中均适用。


# 想保存的名字
dir_name = "junzi"

# 想拆分的文件夹所在路径
file_path = r'F:\ALL'

# 获取 file_path 下的文件和文件夹列表
# 因为 file_path 里面没有文件夹,所以不处理有文件夹的情况
pathDir = os.listdir(file_path)

获取列表后,对列表中的元素进行逐一遍历。由于初始状态i为0,是200的倍数,因此初始阶段k值会先加1。

allDir变量存储当前遍历到的文件名及其后缀。from_path变量表示当前文件的完整源路径,to_path变量表示文件复制的目标路径。

随后调用copy(from_path, to_path)函数完成文件复制操作,最后i自增1以更新计数。


for allDir in pathDir:
  if( (i%200) == 0):
    print("200 的倍数,新建一个文件夹")
    k += 1

  print(allDir)
  from_path = os.path.join(file_path, allDir)
  to_path = save_dir + "\\" + dir_name + str(k)

  # 如果 to_path 目录不存在,则创建
  if not os.path.isdir(to_path):
    os.makedirs(to_path)
  copy(from_path, to_path)
  i += 1

函数行为说明

3 相关说明

shutil库中的copy()函数将文件复制到新位置时,会生成新的创建时间、修改时间和访问时间;而copy2()函数则会保留原文件的这些时间属性。

以上内容为本文全部介绍,希望能对读者的学习有所帮助,欢迎继续支持本站。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表