Python批量修改文件后缀名?一个脚本搞定,告别繁琐操作!
还在手动一个个修改文件后缀名?也太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("批量重命名完成!")
代码解读:
import os: 导入os模块,用于文件和目录操作。batch_rename_extension(dir_path, old_ext, new_ext): 定义一个函数,接收目录路径、旧后缀名和新后缀名作为参数。os.listdir(dir_path): 获取指定目录下的所有文件和文件夹名。filename.endswith(old_ext): 检查文件名是否以旧后缀名结尾。os.path.join(dir_path, filename): 将目录路径和文件名拼接成完整的文件路径。filename.replace(old_ext, new_ext): 将文件名中的旧后缀名替换成新后缀名。os.rename(old_filepath, new_filepath): 重命名文件。try...except: 使用try...except块进行错误处理,防止程序因个别文件重命名失败而崩溃。
使用方法:
- 保存代码: 将代码保存为
.py文件,例如rename_files.py。 - 修改目录路径: 将
directory_path = "/path/to/your/directory"替换成你要修改的目录的实际路径。注意,这必须是绝对路径,别偷懒只写个文件名。 - 运行脚本: 在命令行或终端中运行
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! 以后再也不用手动操作啦! 赶紧试试,提高你的工作效率吧!