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)

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

注意事项:

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

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

相关推荐
在努力的前端小白3 分钟前
Spring Boot 敏感词过滤组件实现:基于DFA算法的高效敏感词检测与替换
java·数据库·spring boot·文本处理·敏感词过滤·dfa算法·组件开发
搏博9 分钟前
基于Python3.10.6与jieba库的中文分词模型接口在Windows Server 2022上的实现与部署教程
windows·python·自然语言处理·flask·中文分词
lxmyzzs1 小时前
pyqt5无法显示opencv绘制文本和掩码信息
python·qt·opencv
专注API从业者1 小时前
Python + 淘宝 API 开发:自动化采集商品数据的完整流程
大数据·运维·前端·数据挖掘·自动化
萧鼎2 小时前
Python pyzmq 库详解:从入门到高性能分布式通信
开发语言·分布式·python
烛阴2 小时前
TypeScript高手密技:解密类型断言、非空断言与 `const` 断言
前端·javascript·typescript
一叶飘零_sweeeet2 小时前
从繁琐到优雅:Java Lambda 表达式全解析与实战指南
java·lambda·java8
艾伦~耶格尔3 小时前
【集合框架LinkedList底层添加元素机制】
java·开发语言·学习·面试
样子20183 小时前
Uniapp 之renderjs解决swiper+多个video卡顿问题
前端·javascript·css·uni-app·html
yujkss3 小时前
Python脚本每天爬取微博热搜-终版
开发语言·python