You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python实现复制现有文件并按递增1批量生成指定数量副本?

解决模板文件批量递增复制的问题

原代码的问题点

  • 没必要遍历目录下所有文件,我们只需要针对目标模板文件操作
  • 内层循环的i +=1是错误操作,range(0,10)会自动生成0到9的序列,你这样修改会让i最后固定为10,根本没法生成连续递增的文件名
  • 缺少核心的文件复制步骤,没调用shutil.copy()完成实际的文件复制

基础版:指定模板文件批量复制

如果你已经明确知道模板文件是0.json,要复制N次生成1.json到N.json,用下面的代码:

import os
import shutil

# 替换成你的目标文件路径
os.chdir('[INSERT PATH]')

# 定义模板文件和要复制的次数
template_file = "0.json"
copy_times = 9  # 生成1-9.json,共9个新文件

# 拆分文件名和后缀
base_name, file_ext = os.path.splitext(template_file)

# 循环生成新文件
for i in range(1, copy_times + 1):
    new_file = f"{i}{file_ext}"
    # 核心:复制模板文件到新文件
    shutil.copy(template_file, new_file)
    print(f"已生成: {new_file}")

扩展版:自动识别最大编号的模板文件

如果想自动找到目录里编号最大的json文件作为模板,接着往下生成新文件,用这个版本:

import os
import shutil

os.chdir('[INSERT PATH]')

# 找出所有数字命名的json文件
json_files = []
for file in os.listdir():
    if file.endswith('.json'):
        name_part, _ = os.path.splitext(file)
        if name_part.isdigit():
            json_files.append(file)

if not json_files:
    print("没找到数字命名的json模板文件")
else:
    # 找到编号最大的文件
    json_files.sort(key=lambda x: int(os.path.splitext(x)[0]))
    latest_template = json_files[-1]
    max_num = int(os.path.splitext(latest_template)[0])
    copy_times = 5  # 要复制的次数
    file_ext = os.path.splitext(latest_template)[1]

    # 从max_num+1开始生成新文件
    for i in range(max_num + 1, max_num + 1 + copy_times):
        new_file = f"{i}{file_ext}"
        shutil.copy(latest_template, new_file)
        print(f"已生成: {new_file}")

关键知识点

  • os.path.splitext():用来拆分文件名和后缀,比如把0.json拆成0和.json
  • shutil.copy():完成文件复制的核心方法,第一个参数是源文件,第二个是目标文件名
  • range(start, end):生成从start到end-1的整数序列,比如range(1,10)会生成1-9的数字,刚好对应要生成的文件名编号

内容的提问来源于stack exchange,提问作者cimply

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 22:32:24