Python命令怎样批量重命名文件

来源:AI社区作者:冷风头衔:草根站长
导读:本期聚焦于小伙伴创作的《Python命令怎样批量重命名文件》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《Python命令怎样批量重命名文件》有用,将其分享出去将是对创作者最好的鼓励。

在Python中实现批量重命名文件,核心是通过内置的文件操作模块获取目标文件列表,再按照预设规则修改每个文件的名称。常用的模块包括os模块和shutil模块,二者可以满足绝大多数重命名场景的需求。

Python命令怎样批量重命名文件

基础方法:使用os模块重命名

os模块是Python标准库中用于操作系统交互的核心模块,其中的os.rename()函数可以直接修改单个文件的名称,结合os.listdir()获取目录下的所有文件,就能实现批量操作。

简单批量重命名示例

以下代码实现将指定目录下所有txt文件的后缀修改为md:

import os

# 目标文件目录
target_dir = "./test_files"
# 遍历目录下的所有文件
for filename in os.listdir(target_dir):
    # 拼接完整文件路径
    old_path = os.path.join(target_dir, filename)
    # 判断是否为文件且后缀为txt
    if os.path.isfile(old_path) and filename.endswith(".txt"):
        # 生成新文件名,替换后缀
        new_filename = filename.replace(".txt", ".md")
        new_path = os.path.join(target_dir, new_filename)
        # 执行重命名
        os.rename(old_path, new_path)
        print(f"已将 {filename} 重命名为 {new_filename}")

添加统一前缀示例

如果需要给所有文件添加统一的前缀,可以调整文件名生成逻辑:

import os

target_dir = "./test_files"
prefix = "new_"
for filename in os.listdir(target_dir):
    old_path = os.path.join(target_dir, filename)
    if os.path.isfile(old_path):
        # 拼接新文件名,添加前缀
        new_filename = prefix + filename
        new_path = os.path.join(target_dir, new_filename)
        os.rename(old_path, new_path)
        print(f"已将 {filename} 重命名为 {new_filename}")

使用shutil模块处理跨目录重命名

如果需要将文件重命名后移动到其他目录,使用shutil.move()函数会更方便,该函数既可以修改文件名,也可以同时移动文件位置。

import os
import shutil

source_dir = "./old_files"
target_dir = "./new_files"
# 确保目标目录存在
os.makedirs(target_dir, exist_ok=True)

for filename in os.listdir(source_dir):
    old_path = os.path.join(source_dir, filename)
    if os.path.isfile(old_path):
        # 生成新文件名,添加日期前缀
        new_filename = "202405_" + filename
        new_path = os.path.join(target_dir, new_filename)
        # 移动并重命名文件
        shutil.move(old_path, new_path)
        print(f"已将 {filename} 移动到 {target_dir} 并重命名为 {new_filename}")

按序号批量重命名

很多场景下需要按照序号对文件进行重命名,比如将杂乱的图片文件命名为img_001.jpg、img_002.jpg这样的格式,实现逻辑如下:

import os

target_dir = "./images"
# 获取目录下所有图片文件,按名称排序
image_files = [f for f in os.listdir(target_dir) if f.endswith((".jpg", ".png", ".jpeg"))]
image_files.sort()

# 遍历文件,按序号重命名
for index, filename in enumerate(image_files, start=1):
    old_path = os.path.join(target_dir, filename)
    # 生成3位序号,不足补0
    new_filename = f"img_{index:03d}{os.path.splitext(filename)[1]}"
    new_path = os.path.join(target_dir, new_filename)
    os.rename(old_path, new_path)
    print(f"已将 {filename} 重命名为 {new_filename}")

操作注意事项

  • 重命名前建议先备份原文件,避免误操作导致文件丢失
  • 使用os.path.exists()判断新文件名是否已存在,防止覆盖已有文件
  • 如果文件名包含中文,需要确保Python脚本的编码格式为UTF-8,避免乱码问题
  • 遍历文件时如果需要处理子目录下的文件,可以使用os.walk()函数递归获取所有文件路径

递归处理子目录文件示例

以下代码实现递归遍历目标目录及其所有子目录,将所有的log文件后缀修改为txt:

import os

root_dir = "./project_logs"
for root, dirs, files in os.walk(root_dir):
    for filename in files:
        if filename.endswith(".log"):
            old_path = os.path.join(root, filename)
            new_filename = filename.replace(".log", ".txt")
            new_path = os.path.join(root, new_filename)
            os.rename(old_path, new_path)
            print(f"已将 {old_path} 重命名为 {new_path}")

Python批量重命名os模块shutil模块文件操作修改时间:2026-07-21 22:24:25

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。