WEBKT

Python批量修改文件后缀名?一个脚本搞定,告别繁琐操作!

206 0 0 0

还在手动一个个修改文件后缀名?也太out啦!今天教你用Python写个小脚本,轻松批量修改,解放你的双手!就拿把一个目录下所有.txt文件改成.md文件举例,保证简单易懂,一看就会!

为啥要用Python?

  • 简单易学: Python语法简洁,上手快,几行代码就能搞定。
  • 效率高: 批量处理,速度杠杠的,省时省力。
  • 跨平台: Windows、Mac、Linux都能跑。

Show me the code!

import os

def batch_rename_extension(dir_path, old_ext, new_ext):
    """批量修改指定目录下所有文件的后缀名。"
    
    Args:
        dir_path (str): 目标目录的路径。
        old_ext (str): 要替换的旧后缀名(例如:".txt")。
        new_ext (str): 要替换成的新后缀名(例如:".md")。
    """
    for filename in os.listdir(dir_path):
        if filename.endswith(old_ext):
            old_filepath = os.path.join(dir_path, filename)
            new_filename = filename.replace(old_ext, new_ext)
            new_filepath = os.path.join(dir_path, new_filename)
            try:
                os.rename(old_filepath, new_filepath)
                print(f"已将 {filename} 重命名为 {new_filename}")
            except Exception as e:
                print(f"重命名 {filename} 失败: {e}")

# 使用示例
directory_path = "/path/to/your/directory"  # 替换成你的目录路径
old_extension = ".txt"
new_extension = ".md"

batch_rename_extension(directory_path, old_extension, new_extension)

print("批量重命名完成!")

代码解读:

  1. import os 导入os模块,用于文件和目录操作。
  2. batch_rename_extension(dir_path, old_ext, new_ext) 定义一个函数,接收目录路径、旧后缀名和新后缀名作为参数。
  3. os.listdir(dir_path) 获取指定目录下的所有文件和文件夹名。
  4. filename.endswith(old_ext) 检查文件名是否以旧后缀名结尾。
  5. os.path.join(dir_path, filename) 将目录路径和文件名拼接成完整的文件路径。
  6. filename.replace(old_ext, new_ext) 将文件名中的旧后缀名替换成新后缀名。
  7. os.rename(old_filepath, new_filepath) 重命名文件。
  8. try...except 使用try...except块进行错误处理,防止程序因个别文件重命名失败而崩溃。

使用方法:

  1. 保存代码: 将代码保存为.py文件,例如rename_files.py
  2. 修改目录路径:directory_path = "/path/to/your/directory"替换成你要修改的目录的实际路径。注意,这必须是绝对路径,别偷懒只写个文件名。
  3. 运行脚本: 在命令行或终端中运行python rename_files.py

进阶技巧:

  • 处理子目录: 如果要处理包含子目录的目录,可以使用os.walk()函数递归遍历所有文件。下面是示例代码:

    import os
    
    def batch_rename_extension_recursive(dir_path, old_ext, new_ext):
        """递归批量修改指定目录下及其所有子目录下文件的后缀名。"""
        for root, _, files in os.walk(dir_path):
            for filename in files:
                if filename.endswith(old_ext):
                    old_filepath = os.path.join(root, filename)
                    new_filename = filename.replace(old_ext, new_ext)
                    new_filepath = os.path.join(root, new_filename)
                    try:
                        os.rename(old_filepath, new_filepath)
                        print(f"已将 {old_filepath} 重命名为 {new_filepath}")
                    except Exception as e:
                        print(f"重命名 {old_filepath} 失败: {e}")
    
    # 使用示例
    

directory_path = "/path/to/your/directory" # 替换成你的目录路径
old_extension = ".txt"
new_extension = ".md"

batch_rename_extension_recursive(directory_path, old_extension, new_extension)

print("批量重命名完成!")
```

  • 更灵活的重命名: 如果需要更复杂的重命名规则,可以使用正则表达式(re模块)进行匹配和替换。比如,你想把所有文件名中包含"old"的txt文件,改成md文件,并且把"old"替换成"new",可以这么写:

    import os
    import re
    
    def batch_rename_with_regex(dir_path, old_pattern, new_pattern, old_ext, new_ext):
        """使用正则表达式批量修改文件名和后缀名。"""
        for filename in os.listdir(dir_path):
            if filename.endswith(old_ext) and re.search(old_pattern, filename):
                old_filepath = os.path.join(dir_path, filename)
                new_filename = re.sub(old_pattern, new_pattern, filename.replace(old_ext, new_ext))
                new_filepath = os.path.join(dir_path, new_filename)
                try:
                    os.rename(old_filepath, new_filepath)
                    print(f"已将 {filename} 重命名为 {new_filename}")
                except Exception as e:
                    print(f"重命名 {filename} 失败: {e}")
    
    # 使用示例
    

directory_path = "/path/to/your/directory" # 替换成你的目录路径
old_pattern = r"old" # 匹配"old"的正则表达式
new_pattern = "new" # 替换成"new"
old_extension = ".txt"
new_extension = ".md"

batch_rename_with_regex(directory_path, old_pattern, new_pattern, old_extension, new_extension)

print("批量重命名完成!")
```

注意事项:

  • 备份!备份!备份! 重要的事情说三遍,在运行脚本之前,务必备份你的文件,以防万一。
  • 路径问题: 确保你提供的目录路径是正确的。
  • 权限问题: 确保你有足够的权限修改文件。

总结:

用Python批量修改文件后缀名,so easy! 以后再也不用手动操作啦! 赶紧试试,提高你的工作效率吧!

代码搬运工小李 Python文件操作批量重命名

评论点评