Python实现文件夹文件批量拆分与复制的方法
本文介绍如何使用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()函数则会保留原文件的这些时间属性。
以上内容为本文全部介绍,希望能对读者的学习有所帮助,欢迎继续支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









