Python实现批量修改文件名(附带源码)

最近工作有个需求:

  • 批量修改指定目录下的所有文件名的后缀名
  • 批量修改指定目录下的所有文件名的开头或结尾
  • 批量修改指定目录下的所有文件名,根据指定规则进行替换

代码示例:

1. 批量修改文件后缀名

复制代码
import os

def rename_files(folder_path, new_suffix):
    """批量修改指定目录下的所有文件名的后缀名

    Args:
        folder_path: 要修改的文件目录
        new_suffix: 新的文件后缀名

    Returns:
        None
    """

    for filename in os.listdir(folder_path):
        # 获取文件路径和扩展名
        filepath, ext = os.path.splitext(filename)

        # 判断文件是否存在
        if os.path.isfile(os.path.join(folder_path, filename)):
            # 修改文件名
            new_filename = filepath + new_suffix
            os.rename(os.path.join(folder_path, filename), os.path.join(folder_path, new_filename))

# 使用示例
folder_path = "/path/to/folder"
new_suffix = ".txt"

rename_files(folder_path, new_suffix)

2. 批量修改文件名开头或结尾

复制代码
import os

def rename_files(folder_path, prefix, suffix):
    """批量修改指定目录下的所有文件名的开头或结尾

    Args:
        folder_path: 要修改的文件目录
        prefix: 新的文件名前缀
        suffix: 新的文件名后缀

    Returns:
        None
    """

    for filename in os.listdir(folder_path):
        # 获取文件路径和扩展名
        filepath, ext = os.path.splitext(filename)

        # 判断文件是否存在
        if os.path.isfile(os.path.join(folder_path, filename)):
            # 修改文件名
            new_filename = prefix + filepath + suffix + ext
            os.rename(os.path.join(folder_path, filename), os.path.join(folder_path, new_filename))

# 使用示例
folder_path = "/path/to/folder"
prefix = "new_"
suffix = "_new"

rename_files(folder_path, prefix, suffix)

3. 批量修改文件名,根据指定规则进行替换

复制代码
import os

def rename_files(folder_path, replace_dict):
    """批量修改指定目录下的所有文件名,根据指定规则进行替换

    Args:
        folder_path: 要修改的文件目录
        replace_dict: 替换规则字典,key为要替换的字符串,value为替换后的字符串

    Returns:
        None
    """

    for filename in os.listdir(folder_path):
        # 获取文件路径和扩展名
        filepath, ext = os.path.splitext(filename)

        # 判断文件是否存在
        if os.path.isfile(os.path.join(folder_path, filename)):
            # 修改文件名
            new_filename = filepath
            for key, value in replace_dict.items():
                new_filename = new_filename.replace(key, value)
            new_filename = new_filename + ext
            os.rename(os.path.join(folder_path, filename), os.path.join(folder_path, new_filename))

# 使用示例
folder_path = "/path/to/folder"
replace_dict = {
    "old": "new",
    "_": "-",
}

rename_files(folder_path, replace_dict)

以上代码仅供参考,请根据实际需求进行修改。

注意事项:

  • 批量修改文件名之前,请务必备份文件。
  • 批量修改文件名时,请注意区分大小写。

希望以上内容对您有所帮助。

相关推荐
Dumbness9 小时前
关键词回复里写了 {订单号},群机器人整条消息都炸了
python·微信
调接口的阿光9 小时前
调用对话接口时输出被截断怎么办:先看 finish_reason,再决定是续写一次、缩小范围,还是换成更短的格式(Python)
人工智能·python
Swot9 小时前
SvelteKit Remote Functions 使用指南
前端·后端
Cooper259 小时前
单文件 Flask 跑通微信服务器校验:先跑通再谈工程化
python·flask
Cooper259 小时前
三源热榜去重加 AI 摘要:URL 唯一键踩出的三个坑
前端·python
用户4019925568619 小时前
多源异构 B2B 公开需求信号去重与企业实体证据链存储设计(64-bit SimHash 分桶 + Jaccard)
python
文丑颜不良啊10 小时前
LeetCode2901~2920题目解析
java·leetcode
码云社区10 小时前
能碳管理系统开发要关注什么?能源数据、统计口径与AI分析的衔接
java·人工智能·ai·能源·能源管理系统·能碳管理系统·能碳管理系统源码
Yk酱2284010 小时前
A2UI探索随笔-技术选型
前端
前端繁华如梦10 小时前
# 从 73000 行压缩代码到 TypeScript 模块化:我把一个 Three.js FPS 游戏 1:1 复刻了一遍
前端