Python批量重命名文件脚本实战:从环境搭建到os模块应用
很多Python新手学完基础语法后,最大的困惑是不知道如何把知识点落到实际代码里。本文围绕一个真实需求——批量重命名文件夹里的文件,完整梳理Python环境搭建、核心语法要点,并给出可直接运行的脚本。整个流程不涉及复杂底层原理,适合刚入门的朋友照着操作并理解关键代码。一、环境搭建的两个关键点
Python安装本身不复杂,但Windows用户要特别注意:安装时务必勾选“Add Python to PATH”。这一步如果漏掉,安装完成后在cmd里输入python会提示命令不存在。勾选之后,打开命令提示符执行:
python --version
如果能正常输出版本号,说明环境可用。如果之前没有勾选PATH,可以重新运行安装程序勾选修复,也可以手动把Python安装目录和Scripts目录加入系统环境变量。
版本方面,不建议新手同时安装多个Python版本。优先选择3.10到3.12之间的稳定版本,太新的版本可能遇到部分第三方库尚未兼容的问题。
IDE方面,PyCharm社区版是免费且对新手友好的选择。安装后新建项目,选择已装好的Python解释器,然后新建.py文件即可写代码。如果电脑配置一般,也可以用VS Code加Python插件,更轻量。
二、编写批量重命名脚本前必须掌握的语法
Python属于弱类型语言,变量直接赋值即可,不需要声明类型。常见的数据类型包括字符串、整数、浮点数、布尔值、列表等。列表用方括号定义,有序且可修改。
name = "Python学习"
age = 2
score = 95.5
my_list = ["java","python","go"]
print(name, age, score)
print(my_list)
条件判断使用if-elif-else,循环有for和while两种。Python用缩进划分代码块,同一个代码块内的缩进空格数必须一致,这是新手最容易踩的坑。
score = 85
if score >= 90:
print("优秀")
elif score >= 60:
print("及格")
else:
print("不及格")
lang_list = ["Python","Java","C++"]
for lang in lang_list:
print(f"编程语言:{lang}")
函数用def关键字定义,可以把重复逻辑封装起来复用:
def calc_sum(a, b):
return a + b
res = calc_sum(10, 20)
print(res)
三、文件批量重命名脚本实现
场景很常见:一个文件夹里有很多图片或文档,名字乱七八糟,想统一改成有规律的前缀加序号。手动改效率太低,用Python的os模块几十行代码就能解决。
运行脚本前建议先备份原始文件,防止误操作。完整代码如下:
import os
def batch_rename(folder_path, prefix="file"):
"""
folder_path:目标文件夹路径
prefix:文件名称前缀
"""
if not os.path.exists(folder_path):
print("文件夹路径不存在!")
return
count = 1
# 遍历文件夹内所有内容
for filename in os.listdir(folder_path):
old_path = os.path.join(folder_path, filename)
# 跳过子文件夹,只处理文件
if os.path.isfile(old_path):
# 分离文件名和后缀,保证重命名不丢格式
suffix = os.path.splitext(filename)
new_name = f"{prefix}_{count}{suffix}"
new_path = os.path.join(folder_path, new_name)
os.rename(old_path, new_path)
count += 1
print(f"处理完成,一共修改{count - 1}个文件")
if __name__ == "__main__":
# 修改这里为你自己的文件夹路径
target_folder = r"D:\test_files"
batch_rename(target_folder, prefix="picture")
这段脚本的核心逻辑并不复杂,关键在于os模块几个内置函数的配合:
- os.listdir(folder_path):读取指定文件夹下的全部条目,包括文件和子目录。
- os.path.join(folder_path, filename):拼接完整的文件路径,保证跨平台路径分隔符正确。
- os.path.isfile(old_path):判断当前条目是否为文件,子文件夹会被跳过,避免误改目录。
- os.path.splitext(filename):把文件名和后缀拆开,比如report.pdf拆成report和.pdf,新文件名直接复用原后缀就不会破坏格式。
- os.rename(old_path, new_path):执行实际的重命名操作。
运行后,目标文件夹里的文件会变成picture_1.jpg、picture_2.png这种统一格式。count从1开始,每处理一个文件自增1,最终输出总共修改的文件数量。
这个脚本还可以继续扩展,比如只处理指定后缀的文件,或者把日期时间戳加入文件名。对新手来说,基于这个案例去改动,比单纯看语法书更容易理解os模块的用途。
四、学习过程中的避坑建议
不要只看视频或教程然后眼高手低,看懂和会写之间需要大量敲代码练习。报错不要怕,控制台红色的提示会直接指出错误行号和原因,学会阅读报错是程序员的基本功。遇到常见需求时,先查Python标准库,很多功能都不用自己从零实现。学习路径也要循序渐进,先完成小脚本,再尝试更大的项目。
本文从环境搭建讲到基础语法,最后落成一个可以实际使用的批量重命名脚本,整个过程就是Python入门的一个缩影:安装环境、掌握变量/分支/循环/函数、调用标准库解决真实问题。学完这个案例,可以继续往数据分析、自动化脚本或Web后端方向深入,但前提是持续写代码、积累项目经验,而不是停留在看教程的阶段。
Re: Python批量重命名文件脚本实战:从环境搭建到os模块应用
楼主的帖子很实用,正好我最近在整理下载的电子书和资料,一堆乱码文件名看得头疼。按照你给的脚本思路,我稍微改了一下,只处理特定后缀,比如只改.docx和.pdf,运行一次就清爽多了,特别有成就感。 之前一直没搞懂 `os.path.splitext` 到底是为啥要用,你这一解释就通了,原来是为了保留后缀名,防止把 `.jpg` 搞没,这个细节对我这种小白帮助很大。还有那个“跳过子文件夹”的判断,太关键了,我之前自己瞎写的时候就把一个目录给改了名字,差点打不开项目,吓出一身冷汗。 我觉得楼主说的“看懂和会写之间需要大量敲代码练习”特别对。以前总爱看教程,看完觉得自己会了,一动手就各种报错。现在我会试着拿身边的小需求练手,报错了就自己读读那几行红字,慢慢也能解决不少问题了。 另外有个小问题想请教下:如果我想实现“重命名之后,如果发现文件名已在文件夹里存在,自动加个(1)再存”,这种需求该往脚本里加点什么?希望楼主以后也能讲讲类似的错误处理思路,先谢谢啦!Re: Python批量重命名文件脚本实战:从环境搭建到os模块应用
这篇教程写得很实在,尤其对刚学完语法不知道怎么落地的朋友来说,确实是一个从0到1的完整案例。我自己最受益的是 `os.path.splitext` 保留后缀的思路,之前我都是手动找最后一个点,麻烦还容易出错。 另外提醒一下新手:运行脚本前备份文件这点太重要了,我有次就是没备份,直接把一堆文件名改乱,后来只能靠第三方工具找回,血的教训。 看到你最后说可以扩展只处理指定后缀,我正好想问:如果想在脚本里加一个参数,只重命名比如 `.jpg` 和 `.png` 文件,是不是在循环里用 `if filename.endswith(('.jpg', '.png'))` 判断一下就行?这样应该能避免误改其他类型的文件吧?Re: Python批量重命名文件脚本实战:从环境搭建到os模块应用
感谢分享!这篇对新手很友好,尤其是环境搭建那块提醒勾选PATH,当年我就踩过这个坑。脚本注释也写得很清楚,照着敲一遍就能理解os模块那几个函数怎么配合了。 一个小建议:如果文件名顺序不重要,这样用listdir没问题;但若想按某种顺序(比如创建时间)重命名,可以先排序再处理。另外“Python属于弱类型语言”这个说法有点不太严谨,Python其实是强类型动态语言,只是变量不需要声明类型而已。不过整体不影响理解,瑕不掩瑜。
页:
[1]