吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 955|回复: 4
收起左侧

[Python 原创] 批量重命名文件-修改指定目录下所有文件的扩展名或前缀

[复制链接]
chuangye 发表于 2025-5-27 09:47
功能:
文件处理,批量重命名文件,修改指定目录下所有文件的扩展名或前缀

[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import os
 
 
def batch_rename(folder_path, prefix="document", keep_extension=True, sort_key=None):
    """
    批量重命名指定文件夹中的文件
 
    参数:
    folder_path (str): 目标文件夹路径
    prefix (str): 新文件名前缀(默认:"document")
    keep_extension (bool): 是否保留原始扩展名(默认:True)
    sort_key (callable): 排序函数(默认:按文件名排序)
    """
    try:
        # 获取文件列表并过滤掉目录
        files = [f for f in os.listdir(folder_path)
                 if os.path.isfile(os.path.join(folder_path, f))]
 
        # 排序处理
        if sort_key:
            files.sort(key=sort_key)
        else:
            files.sort()  # 默认按文件名排序
 
        success_count = 0
        skipped_count = 0
 
        for idx, filename in enumerate(files, start=1):
            old_path = os.path.join(folder_path, filename)
 
            # 跳过系统文件(如Thumbs.db)
            if filename.startswith('~$'):
                skipped_count += 1
                continue
 
            # 构造新文件名
            base, ext = os.path.splitext(filename)
            new_name = f"{prefix}_{idx:03d}"
            if keep_extension:
                new_name += ext
            new_path = os.path.join(folder_path, new_name)
 
            try:
                # 防止文件名重复
                counter = 1
                while os.path.exists(new_path):
                    new_name = f"{prefix}_{idx:03d}_{counter}{ext}"
                    new_path = os.path.join(folder_path, new_name)
                    counter += 1
 
                os.rename(old_path, new_path)
                print(f"重命名成功: {filename} -> {new_name}")
                success_count += 1
 
            except Exception as e:
                print(f"错误: 无法重命名 {filename} - {str(e)}")
 
        print(f"\n操作完成!成功重命名 {success_count} 个文件,跳过 {skipped_count} 个文件")
 
    except Exception as e:
        print(f"发生错误: {str(e)}")
 
 
# 使用示例
if __name__ == "__main__":
    target_folder = "F:\\工作文件\\临时\\demo001"
 
    # 自定义排序示例(按修改时间排序):
    # from datetime import datetime
    # batch_rename(target_folder, sort_key=lambda x: os.path.getmtime(os.path.join(target_folder, x)))
 
    batch_rename(
        folder_path=target_folder,
        prefix="report",
        keep_extension=False# 设置为False时所有文件将变为.txt
        sort_key=None  # 自定义排序函数可在此处传入
    )

免费评分

参与人数 2吾爱币 +4 热心值 +2 收起 理由
苏紫方璇 + 3 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
一场荒唐半生梦 + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

一场荒唐半生梦 发表于 2025-5-27 11:21
楼主有没有打包的
gegegefei 发表于 2025-5-27 14:23
感谢楼主分享,批量重命名软件好用,很方便。
ghs0925 发表于 2025-5-27 15:11
感谢楼主分享,这用起来雀氏比手动舒服多了
金屯 发表于 2025-5-30 13:32
有点价值
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-8-12 02:01

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表