
本文介绍使用python脚本批量复制模板目录结构,并按指定数量自动生成带递增编号(如 shot_010、shot_020)的文件夹与文件,支持灵活配置副本数、路径映射和安全重命名。
本文介绍使用python脚本批量复制模板目录结构,并按指定数量自动生成带递增编号(如 shot_010、shot_020)的文件夹与文件,支持灵活配置副本数、路径映射和安全重命名。
在影视制作、VFX流程或工程化项目管理中,常需基于一个标准模板(如 shot_010)快速生成多个带序号的副本(如 shot_020、shot_030…),每个副本需保持完整子目录结构及内部文件的同步重命名。手动操作易出错且低效,而借助 Python 可实现完全自动化、可复用、可扩展的批量处理。
以下是一个健壮、生产就绪的解决方案,核心逻辑分为三步:生成序列名 → 创建目标目录 → 复制并重命名文件。我们以 RootFolder/shot_010/folder/shot_010_comp_v01.comp 为模板,生成 n 个递增编号副本:
import os
import shutil
def get_dir_name(count: int):
"""生成 shot_010, shot_020, ..., shot_N0 格式的文件夹名(N 从 1 开始)"""
for i in range(1, count + 1):
yield f"shot_{i:02}0"
def get_file_name(count: int):
"""生成对应文件名,如 shot_010_comp_v01.comp → shot_020_comp_v01.comp"""
for i in range(1, count + 1):
yield f"shot_{i:02}0_comp_v01.comp"
def duplicate_shot_folder(
src_root: str = "shot_010",
dest_root: str = ".",
count: int = 5,
template_file_path: str = "shot_010/folder/shot_010_comp_v01.comp"
):
"""
批量复制模板文件夹并顺序重命名
:param src_root: 源模板文件夹名(不含父路径)
:param dest_root: 目标根目录(默认当前目录)
:param count: 要生成的副本数量
:param template_file_path: 模板文件相对于项目根的路径(用于定位源文件)
"""
# 确保源文件存在
if not os.path.isfile(template_file_path):
raise FileNotFoundError(f"模板文件不存在:{template_file_path}")
# 遍历生成每一份副本
for dir_name, file_name in zip(get_dir_name(count), get_file_name(count)):
target_dir = os.path.join(dest_root, dir_name, "folder")
target_file = os.path.join(target_dir, file_name)
# 创建目标目录(含嵌套)
os.makedirs(target_dir, exist_ok=True)
# 复制文件(非硬链接,确保独立性)
shutil.copyfile(template_file_path, target_file)
print(f"✓ 已创建:{target_file}")
# ✅ 使用示例:生成 3 个副本(shot_010 → shot_030)
duplicate_shot_folder(count=3)关键说明与注意事项:
- ✅ 路径安全:使用
os.path.join()构建跨平台兼容路径;exist_ok=True避免重复创建目录报错;- ✅ 命名可控:
{i:02}0实现两位数字前导零(如1→010,12→120),如需三位可改为{i:03}0;- ⚠️ RootFolder 管理:脚本默认在当前目录下生成
shot_XXX,若需统一置于RootFolder/下,请将dest_root设为"RootFolder",并确保该目录已存在或提前创建;- ?️ 扩展建议:
- 支持多级子目录复制?改用
shutil.copytree()+ 后续重命名,或遍历os.walk()逐项处理;- 支持通配符替换(如自动更新
.comp内部路径)?需结合文本解析(如正则或 AST);- 增加 dry-run 模式?添加
--dry-run参数,仅打印操作而不执行;- 集成命令行调用?搭配
argparse即可一键运行:python duplicate.py --count 10 --root RootFolder。
该方案轻量、无外部依赖,开箱即用,既满足基础批量复制需求,也具备清晰的扩展接口,是规范化项目初始化的理想工具。

















