图像批量重命名(基于Python,本地运行)
🌵文章目录🌵
- 🌳引言🌳
- 🌳场景假设🌳
- 🌳知识储备🌳
- os.path.splitext方法
- 语法
- 示例
- os.listdir方法
- 语法
- 示例
- 🌳解决方案🌳
- 🌳结尾🌳
🌳引言🌳
在数字时代,图像处理已经成为日常生活和工作中不可或缺的一部分。有时候,我们需要批量重命名图像格式文件,以便于管理和组织。Python作为一种功能强大的编程语言,可以轻松地实现这一需求。本文将通过实战案例,向您展示如何使用Python轻松搞定批量图像格式重命名,让您告别繁琐的手动操作,提高工作效率。
🌳场景假设🌳
有一个文件夹内全是图片,需要根据图片名称按顺序浏览。假设一共100多张图片,图像名称如下:
即:
"""
0.jpg, 1.jpg,...,10.jpg, 11.jpg,...,100.jpg, 101.jpg, ...
"""
对于上面的图片,我们清楚地知道浏览顺序,但某些浏览器给出的排序结果却和主观认知不一致。 其排序结果如下:
"""
'0.png', '1.png', '10.png', '100.png', '101.png', '102.png', '103.png',...
"""
可以看出,这种排序方法和首字符大小相关(客观排序结果),而与文件名背后的数值含义无关(主观认知)。
基于上述分析,小编设计了一个【批量重命名图像文件名】的程序,通过统一图像文件名格式来解决【客观排序结果】和【主观认知】不一致带来的问题。
🌳知识储备🌳
Python OS 文件/目录方法
os.path.splitext方法
os.path.splitext
可用于将路径名中的文件扩展名和主文件名分开。这个方法返回一个包含主文件名和扩展名的元组。
语法
os.path.splitext(p)
该方法会从路径名p
中移除文件的扩展名(最后一个"."后面的部分),然后返回一个包含路径的父部分和扩展名的元组。如果路径名p
没有扩展名,则返回一个包含路径和空字符串的元组。
示例
# 使用示例
import osprint(os.path.splitext('example.txt')) # 输出: ('example', '.txt')
print(os.path.splitext('example')) # 输出: ('example', '')
print(os.path.splitext('example.tar.gz')) # 输出: ('example.tar', '.gz')
运行结果:
从结果上看,如果路径名p
没有扩展名,那么os.path.splitext
方法会把空字符""
当作扩展名返回;如果路径名p
有多个扩展名,那么os.path.splitext
方法会返回最后一个扩展名;
os.listdir方法
os.listdir
可用于列出指定目录下的所有文件和子目录。
语法
os.listdir(path)
这里的path
参数是一个字符串,表示要列出其内容的目录的路径。
os.listdir
方法返回一个列表,其中包含指定目录下的所有文件和子目录的名称。如果指定路径不存在或发生错误,该方法将引发FileNotFoundError
异常。
示例
import os# 列出当前目录下的所有文件和子目录
print(os.listdir('.'))
🌳解决方案🌳
自定义统一文件名格式函数:
# 统一文件名格式
# 当指定n=3时,
# 输入 输出
# 0.png ---> 000.png
# 9.png ---> 009.png
# 10.png ---> 010.png
# 99.png ---> 099.png
# 101.png ---> 101.png
def unify_name(name, n):""":param name: 图像文件名+扩展名:param n: 指定的文件名长度:return: 修改后的文件名"""filename, extension = os.path.splitext(name) # 分割文件名和扩展名while len(filename) < n:filename = "0" + filenamereturn filename + extension
完整代码
"""
程序功能:批量重命名图像文件
重命名前:0.jpg, 1.jpg,...,10.jpg, 11.jpg,...,100.jpg, 101.jpg, ...
重命名后:000.jpg, 001.jpg,...,010.jpg, 011.jpg,...,100.jpg, 101.jpg, ..."""
import os# 统一文件名格式
def unify_name(name, n):""":param name: 图像文件名+扩展名:param n: 指定的文件名长度:return: 修改后的文件名"""filename, extension = os.path.splitext(name) # 分割文件名和扩展名while len(filename) < n:filename = "0" + filenamereturn filename + extensioncurrent_dir = "./fake_img" # 自定义文件所在路径
img_names = os.listdir(current_dir) # 用列表对象存放路径中所有图像文件名
for name in img_names:new_name = unify_name(name, n=3) # 修改文件名path = os.path.join(current_dir, name) # 将当前路径current_dir和文件名name拼接成完整路径os.rename(path, os.path.join(current_dir, new_name)) # 重命名文件
🌳结尾🌳
亲爱的读者,首先感谢您抽出宝贵的时间来阅读我们的博客。我们真诚地欢迎您留下评论和意见💬。
俗话说,当局者迷,旁观者清。您的客观视角对于我们发现博文的不足、提升内容质量起着不可替代的作用。
如果博文给您带来了些许帮助,那么,希望您能为我们点个免费的赞👍👍/收藏👇👇,您的支持和鼓励👏👏是我们持续创作✍️✍️的动力。
我们会持续努力创作✍️✍️,并不断优化博文质量👨💻👨💻,只为给您带来更佳的阅读体验。
如果您有任何疑问或建议,请随时在评论区留言,我们将竭诚为你解答~
愿我们共同成长🌱🌳,共享智慧的果实🍎🍏!
万分感谢🙏🙏您的点赞👍👍、收藏⭐🌟、评论💬🗯️、关注❤️💚~