用python脚本怎么实现:把一个文件夹里面.png文件没有固定名称,复制到另外一个文件夹按顺序命名?

发布于:2025-04-21 ⋅ 阅读:(45) ⋅ 点赞:(0)

环境:

python3.10

Win10

问题描述:

用python脚本怎么实现:怎么把一个文件夹里面.png文件没有固定名称,复制到另外一个文件夹按顺序命名?

在这里插入图片描述

解决方案:

1.新建一个脚本文件,内容如下:

import os
import shutil
from pathlib import Path

def organize_png_files(source_dir, target_dir, prefix="image_", start_num=1, digits=4):
    """
    将源文件夹中的PNG文件按顺序复制到目标文件夹
    
    参数:
        source_dir: 源文件夹路径
        target_dir: 目标文件夹路径
        prefix: 新文件名前缀(默认为"image_")
        start_num: 起始序号(默认为1)
        digits: 序号位数(默认为4,如0001)
    """
    # 创建目标文件夹(如果不存在)
    Path(target_dir).mkdir(parents=True, exist_ok=True)
    
    # 获取源文件夹中所有PNG文件(按修改时间排序)
    png_files = sorted(
        [f for f in Path(source_dir).glob("*.png") if f.is_file()],
        key=lambda x: x.stat().st_mtime  # 按修改时间排序
    )
    
    # 计数器初始化
    count = start_num
    
    for src_file in png_files:
        # 生成新文件名(自动补零)
        new_name = f"{prefix}{count:0{digits}d}.png"
        dst_file = Path(target_dir) / new_name
        
        # 复制文件
        shutil.copy2(src_file, dst_file)
        print(f"Copied: {src_file.name} -> {new_name}")
        
        # 计数器增加
        count += 1
    
    print(f"\n完成! 共处理了 {len(png_files)} 个文件")
    print(f"目标文件夹: {os.path.abspath(target_dir)}")

if __name__ == "__main__":
    # 配置参数
    SOURCE_FOLDER = r"C:\Users\Administrator\Downloads\1"  # 源文件夹路径
    TARGET_FOLDER = r"C:\Users\Administrator\Pictures\AI图片"  # 新文件夹路径
    
    # 调用函数
    organize_png_files(
        source_dir=SOURCE_FOLDER,
        target_dir=TARGET_FOLDER,
        prefix="D_",      # 文件名前缀(可选)
        start_num=1,        # 起始编号(可选)
        digits=2            # 编号位数(如03)(可选)
    )

2.执行上面脚本

在这里插入图片描述
查看目标文件夹,成功复制
在这里插入图片描述

影刀5.26.24 python3.7

里面python模块,有点不同:

import os
import shutil
from pathlib import Path

def organize_png_files(source_dir, target_dir, prefix="image_", start_num=1, digits=4):
    """
    将源文件夹中的PNG文件按顺序复制到目标文件夹
    
    参数:
        source_dir: 源文件夹路径
        target_dir: 目标文件夹路径
        prefix: 新文件名前缀(默认为"image_")
        start_num: 起始序号(默认为1)
        digits: 序号位数(默认为4,如0001)
    """
    # 创建目标文件夹(如果不存在)
    Path(target_dir).mkdir(parents=True, exist_ok=True)
    
    # 获取源文件夹中所有PNG文件(按修改时间排序)
    png_files = sorted(
        [f for f in Path(source_dir).glob("*.png") if f.is_file()],
        key=lambda x: x.stat().st_mtime  # 按修改时间排序
    )
    
    # 计数器初始化
    count = start_num
    
    for src_file in png_files:
        # 生成新文件名(自动补零)
        new_name = f"{prefix}{count:0{digits}d}.png"
        dst_file = Path(target_dir) / new_name
        
        # 复制文件
        shutil.copy2(src_file, dst_file)
        print(f"Copied: {src_file.name} -> {new_name}")
        
        # 计数器增加
        count += 1
    
    print(f"\n完成! 共处理了 {len(png_files)} 个文件")
    print(f"目标文件夹: {os.path.abspath(target_dir)}")


# 新增符合影刀规范的main函数
def main(args):
    # 配置参数(建议从系统参数获取,此处保持原有配置)
    SOURCE_FOLDER = r"C:\Users\Administrator\Downloads\1"
    TARGET_FOLDER = r"C:\Users\Administrator\Pictures\AI图片"
    
    organize_png_files(
        source_dir=SOURCE_FOLDER,
        target_dir=TARGET_FOLDER,
        prefix="D_",
        start_num=1,
        digits=2
    )

if __name__ == "__main__":
    main()  # 通过main()函数启动

网站公告

今日签到

点亮在社区的每一天
去签到