我有这个需求是因为下载图片,或者整理图片时用到,比如说漫画
windows操作
windows可以直接全选所有文件,然后重命名,就会批量命名,但是打乱了原有展示顺序
python
我想要实现的是保证按照下载时的顺序(也就是数字原有排序),我的需求是从1开始,而且按照图片原有的顺序(漫画需求)
下面代码实现的是将目标文件夹里所有的图片按照当前顺序重命名为1开始
pip install Pillow
from PIL import Image
import os
# 设置你的文件夹路径
folder_path = r'C:\Users\HML\Desktop\astatic\avatar'
# 列出文件夹中的所有文件
files = os.listdir(folder_path)
# 筛选出所有图片文件(这里假设常见的图片扩展名)
image_extensions = ('.jpg', '.jpeg', '.png', '.gif', '.bmp', '.tiff', '.tif')
image_files = [f for f in files if f.lower().endswith(image_extensions)]
# 按照名称排序图片文件
sorted_image_files = sorted(image_files)
# 重命名并转换图片文件
for index, file in enumerate(sorted_image_files, start=1):
# 构建新的文件名,保持原有扩展名
original_extension = os.path.splitext(file)[1].lower()
new_file_name = f'{index}{original_extension}'
# 完整的旧文件路径
old_file_path = os.path.join(folder_path, file)
# 完整的新文件路径
new_file_path = os.path.join(folder_path, new_file_name)
# 打开图片文件
with Image.open(old_file_path) as img:
# 如果图片不是PNG,将其转换为RGB模式并保存为JPEG
if original_extension != '.png':
img = img.convert('RGB')
img.save(new_file_path, 'JPEG')
else:
# 如果是PNG,直接复制到新文件名
img.save(new_file_path)
print("所有图片已重命名,非PNG图片已转换为.jpg格式,原始文件已删除。")
执行代码后为,可以发现保留了原有的顺序,这对于漫画很重要